私は ctcallcenter を使用し、beginBackgroundTaskWithExpirationHandler を使用したので、コードを呼び出すのに 10 分しかありません。アプリproxBLEはそれを達成しましたか?
1 に答える
Appleのドキュメントによると、次の場合にのみ実行時間を延長できます。UIBackgroundModes
そのためには、キーをinfo.plist
ファイルに追加する必要があります。以下の詳細な説明を参照してください。
長時間実行されるバックグラウンド タスクの実装
実装するのにより多くの実行時間を必要とするタスクについては、一時停止せずにバックグラウンドで実行するための特定のアクセス許可を要求する必要があります。iOS では、特定の種類のアプリのみがバックグラウンドで実行できます。
- 音楽プレーヤー アプリなど、バックグラウンドでユーザーに可聴コンテンツを再生するアプリ
- ナビゲーション アプリなど、常にユーザーに現在地を知らせるアプリ
- Voice over Internet Protocol (VoIP) をサポートするアプリ
- 新しいコンテンツをダウンロードして処理する必要がある Newsstand アプリ
- 外部アクセサリから定期的にアップデートを受信するアプリ
これらのサービスを実装するアプリは、サポートするサービスを宣言し、システム フレームワークを使用してそれらのサービスの関連する側面を実装する必要があります。サービスを宣言すると、使用しているサービスをシステムに認識させることができますが、場合によっては、アプリケーションの中断を実際に防いでいるのはシステム フレームワークです。
アプリでサポートされているバックグラウンド タスクの宣言
一部のタイプのバックグラウンド実行のサポートは、それらを使用するアプリによって事前に宣言する必要があります。Info.plist
アプリは、そのファイルを使用してサービスのサポートを宣言します。UIBackgroundModes
キーをファイルに追加し、Info.plist
その値を次の文字列の 1 つ以上を含む配列に設定します。
audio
—アプリは、バックグラウンドでユーザーに可聴コンテンツを再生します。(このコンテンツには、AirPlay を使用したストリーミング オーディオまたはビデオ コンテンツが含まれます。)location
—アプリは、バックグラウンドで実行されている間でも、ユーザーに自分の位置を知らせ続けます。voip
— このアプリは、ユーザーがインターネット接続を使用して電話をかける機能を提供します。newsstand-content
—このアプリは、バックグラウンドで雑誌や新聞のコンテンツをダウンロードして処理する Newsstand アプリです。external-accessory
— アプリは、外部アクセサリ フレームワークを通じて定期的に更新を配信する必要があるハードウェア アクセサリと連携します。bluetooth-central
—このアプリは、Core Bluetooth フレームワークを介して定期的に更新を配信する必要がある Bluetooth アクセサリと連携します。bluetooth-peripheral
—アプリは、Core Bluetooth フレームワークを介して、ペリフェラル モードでの Bluetooth 通信をサポートします。
上記の各値により、関連するイベントに応答するために適切なタイミングでアプリを起動する必要があることがシステムに通知されます。たとえば、音楽の再生を開始してからバックグラウンドに移行するアプリは、オーディオ出力バッファーを満たすために実行時間が必要です。キーを含めることaudio
で、システム フレームワークは再生を継続し、適切な間隔でアプリに必要なコールバックを行う必要があることがわかります。アプリにこのキーが含まれていない場合、アプリがバックグラウンドに移動すると、アプリによって再生されているオーディオが停止します。