0

iPhoneにラジオストリーミングアプリがあるのだろうかと思いますが、アプリがバックグラウンドで実行されているときに、アプリを自動的に新しいステーションに切り替えることはできますか?これまでのところ、Appleはバックグラウンドで何も実行することを許可していないと聞いています。特定の状態にある一部のイベントは、それらの状態が終了するまで実行できます。

どうもありがとうございます

4

1 に答える 1

1

iOS開発者向けドキュメントによると、それは可能です。

iOS 4以降では、マルチタスクにより、ユーザーが別のアプリに切り替えた後でも、バッテリー寿命を可能な限り維持しながら、アプリをバックグラウンドで実行し続けることができます。ほとんどのアプリは、バックグラウンドに入った直後に一時停止状態に移行します。ユーザーに重要なサービスを提供するアプリのみが、任意の期間実行を継続できます。

可能な限り、バックグラウンドでの実行を避け、アプリを一時停止することをお勧めします。バックグラウンドタスクを実行する必要がある場合は、それが適切な場合のガイドラインを次に示します。

いくつかの特定のユーザーサービスの少なくとも1つを実装する必要があります。
単一の有限長タスクを実行する必要があります。
アプリが実行されていないときに、通知を使用して、関連する情報をユーザーに警告する必要があります。
システムは、一時停止中のアプリを可能な限りメモリに保持し、空きメモリの量が少なくなった場合にのみアプリを削除します。メモリに残っているということは、その後のアプリの起動がはるかに高速であることを意味します。同時に、一時停止とは、アプリがデバイスのバッテリーをそれほど速く消耗しないことを意味します。

その後...

実装により多くの実行時間を必要とするタスクの場合、一時停止せずにバックグラウンドで実行するための特定のアクセス許可を要求する必要があります。iOSでは、特定のアプリタイプのみをバックグラウンドで実行できます。

バックグラウンドでユーザーに音声コンテンツを再生するアプリ(音楽プレーヤーアプリなど)ナビゲーションアプリなど、ユーザーに常に自分の位置を通知するアプリ
ボイスオーバーインターネットプロトコル(VoIP)をサポートする
アプリ新しいコンテンツをダウンロードして処理
するには外部アクセサリから定期的に更新を受け取る
アプリこれらのサービスを実装するアプリは、サポートするサービスを宣言し、システムフレームワークを使用してこれらのサービスの関連する側面を実装する必要があります。サービスを宣言すると、システムはどのサービスを使用しているかを知ることができますが、場合によっては、アプリケーションが一時停止されるのを実際に防ぐのはシステムフレームワークです。

一部のタイプのバックグラウンド実行のサポートは、それらを使用するアプリによって事前に宣言する必要があります。アプリは、Info.plistファイルを使用してサービスのサポートを宣言します。UIBackgroundModesキーをInfo.plistファイルに追加し、その値を次の1つ以上の文字列を含む配列に設定します。

音声-アプリは、バックグラウンドでユーザーに音声コンテンツを再生します。(このコンテンツには、AirPlayを使用したスト​​リーミングオーディオまたはビデオコンテンツが含まれます。)場所-アプリは、バックグラウンドで実行されている場合でも、ユーザーに自分の場所を通知し続けます。
voip-このアプリは、ユーザーがインターネット接続を使用して電話をかける機能を提供します。
newsstand-content-このアプリは、雑誌や新聞のコンテンツをバックグラウンドでダウンロードして処理するニューススタンドアプリです。
外部アクセサリ-アプリは、外部アクセサリフレームワークを介して定期的に更新を配信する必要があるハードウェアアクセサリと連携します。
bluetooth-central-アプリは、CoreBluetoothフレームワークを介して定期的に更新を配信する必要があるBluetoothアクセサリと連携します。
上記の各値は、関連するイベントに応答するためにアプリを適切なタイミングでウェイクアップする必要があることをシステムに通知します。たとえば、音楽の再生を開始してからバックグラウンドに移動するアプリでも、オーディオ出力バッファーを埋めるために実行時間が必要です。オーディオキーを含めると、システムフレームワークに、再生を継続し、適切な間隔でアプリに必要なコールバックを行う必要があることが通知されます。アプリにこのキーが含まれていない場合、アプリがバックグラウンドに移動すると、アプリによって再生されているオーディオは停止します。

オーディオを継続的に再生するアプリ(アプリがバックグラウンドで実行されている場合でも)は、Info.plistファイルにUIBackgroundModesキー(値audioを含む)を含めることで、バックグラウンドオーディオアプリとして登録できます。このキーを含むアプリは、バックグラウンドでユーザーに音声コンテンツを再生する必要があります。

バックグラウンドオーディオアプリの典型的な例は次のとおりです。

音楽プレーヤーアプリAirPlayVoIPアプリでの
オーディオまたはビデオの再生をサポートする
アプリ
UIBackgroundModesキーにオーディオ値が含まれている場合、システムのメディアフレームワークは、対応するアプリがバックグラウンドに移動したときに一時停止されるのを自動的に防ぎます。オーディオまたはビデオコンテンツを再生している限り、アプリはバックグラウンドで実行され続けます。ただし、アプリがオーディオまたはビデオの再生を停止すると、システムはそれを一時停止します。

任意のシステムオーディオフレームワークを使用してバックグラウンドオーディオの再生を開始できますが、これらのフレームワークを使用するプロセスは変更されていません。(AirPlayでのビデオ再生の場合、ビデオを表示するにはMedia Playerフレームワークを使用する必要があります。)メディアファイルの再生中はアプリが一時停止されないため、アプリがバックグラウンドにある間はコールバックが正常に動作します。ただし、コールバックでは、再生用のデータを提供するために必要な作業のみを実行する必要があります。たとえば、ストリーミングオーディオアプリは、サーバーから音楽ストリームデータをダウンロードし、現在のオーディオサンプルをプッシュして再生する必要があります。再生に関係のない無関係なタスクは実行しないでください。

複数のアプリがオーディオをサポートしている可能性があるため、システムは、いつでもオーディオを再生できるアプリを制限します。フォアグラウンドアプリには、常にオーディオを再生する権限があります。さらに、オーディオセッションオブジェクトの構成によっては、1つ以上のバックグラウンドアプリで一部のオーディオコンテンツを再生できる場合もあります。アプリのオーディオセッションオブジェクトを常に適切に構成し、システムフレームワークと慎重に連携して、中断やその他の種類のオーディオ関連の通知を処理する必要があります。バックグラウンド実行用にオーディオセッションオブジェクトを設定する方法については、オーディオセッションプログラミングガイドを参照してください。

完全なドキュメントを読むには、回答の最初にあるリンクに移動し、見出しに移動してBackground Execution and Multitaskingください。アプリがインストールされているデバイスにマルチタスクがあるかどうかを確認することを忘れないでください。iOS4+デバイスのみがそれを持っています。

于 2012-06-05T02:54:18.133 に答える