iPad アプリケーションを作成しており、次の機能が必要です。
アプリケーションが (バックグラウンドまたはフォアグラウンドで) 実行されているときはいつでも、定期的に (たとえば、1 時間に 1 回) HTTP をチェックし、場合によってはデータをダウンロードして保存します。
この背後にある動機は、必要なときにオフラインで使用できるように、アプリケーションが一部のデータをキャッシュできるようにすることです。これによりバッテリーの寿命が短くなる可能性があることは承知していますが、現時点では問題ありません。
私が読んだことからApple iOS Programming Guide: Background Execution and Multitasking、アプリケーションがバックグラウンドタスクを実行することは可能です。私のニーズに合ったケースを見つけることができませんでした:
- バックグラウンドでの有限長タスクの実行: これは、「フォアグラウンドからバックグラウンドに移行する」タスク専用です。
- ローカル通知の配信をスケジュールする: 明らかにそうではありません。通知を作成しているので、データをダウンロードする必要があるだけです。
- 長時間実行されるバックグラウンド タスクの実装: これは問題のように思えますが、調べてみると、いくつかのカテゴリがあり、私のユース ケースをカバーするものは見つかりませんでした (apple.com からコピー ペースト)。
audio
—アプリは、バックグラウンドでユーザーに可聴コンテンツを再生します。(このコンテンツには、AirPlay を使用したストリーミング オーディオまたはビデオ コンテンツが含まれます。)location
—アプリは、バックグラウンドで実行されている間でも、ユーザーに自分の位置を知らせ続けます。voip
— このアプリは、ユーザーがインターネット接続を使用して電話をかける機能を提供します。newsstand-content
—このアプリは、バックグラウンドで雑誌や新聞のコンテンツをダウンロードして処理する Newsstand アプリです。external-accessory
— アプリは、外部アクセサリ フレームワークを通じて定期的に更新を配信する必要があるハードウェア アクセサリと連携します。bluetooth-central
—このアプリは、Core Bluetooth フレームワークを介して定期的に更新を配信する必要がある Bluetooth アクセサリと連携します。bluetooth-peripheral
—アプリは、Core Bluetooth フレームワークを介して、ペリフェラル モードでの Bluetooth 通信をサポートします。
この機能を実装する場合、どのように進めればよいですか? iOSでも可能ですか?
6.0.1 または 6.1 iOS と 4.6 XCode を使用しています。
編集:私が最初に考えたのはニューススタンドのコンテンツでしたが、参照されたドキュメントのより深いところには次のものがあります:
サーバーがプッシュ通知を送信して新しい号が入手可能であることを示すと、システムはアプリに newsstand-content 値を持つ UIBackgroundModes キーがあるかどうかを確認します。
しかし、プッシュではなくプルリクエストが必要です(iPadはサーバーに問い合わせる必要があり、その逆ではありません)。