web-dev-qa-db-ja.com

iOSでのバックグラウンドサービスの実行

30分ごとにサーバーにデータを送信するiOSアプリをコーディングする必要があります。アプリがバックグラウンドにあるときにこれは機能しますか?それはどの程度信頼できるのでしょうか?

14

要求している時間間隔でタスクをバックグラウンドで永続的に実行する方法はありません。開発者の接続を介して特定の許可を要求することができますが、非常に説得力のある議論が必要になることを警告しなければなりません。以下のドキュメントを含めました。おそらく、リクエストは永続的に実行できるグループの1つに該当します。または、実行時間の長いバックグラウンドスレッドの1つを使用して、試行中のタスクを実行するように適応させることもできます。

Appleのドキュメントから直接:

実行時間の長いバックグラウンドタスクの実装

実装により多くの実行時間を必要とするタスクの場合、中断することなくバックグラウンドで実行するために特定の権限を要求する必要があります。 iOSでは、特定の種類のアプリのみがバックグラウンドで実行できます。

  • 音楽プレーヤーアプリなど、バックグラウンドでユーザーに可聴コンテンツを再生するアプリ
  • ナビゲーションアプリなど、ユーザーに常に現在地を知らせるアプリ
  • 新しいコンテンツをダウンロードして処理する必要があるVoice over Internet Protocol(VoIP)ニューススタンドアプリをサポートするアプリ
  • 外部アクセサリから定期的に更新を受け取るアプリ

これらのサービスを実装するアプリは、サポートするサービスを宣言し、システムフレームワークを使用してそれらのサービスの関連する側面を実装する必要があります。サービスを宣言すると、システムは使用するサービスを認識できますが、アプリケーションの中断を実際に防止するのはシステムフレームワークである場合があります。

〜/行末

23
Im_Lp

IOS7では、新しいマルチタスクAPIが導入されました。これにより、バックグラウンドタスクを無限に実行することが可能になります。 Apple使用を推奨 NSURLSession バックグラウンドセッションを作成して転送をキューに入れるAPI

「バックグラウンドフェッチ」と「リモート通知」を含む新しい IBackgroundModes は、バックグラウンドサービスの実行に役立つiOS7にも導入されています

18
hariszaman

https://stackoverflow.com/users/1515108/im-lp が言っているように、iosによって提供されるいくつかの特別な場合を除いて、サービスとしてそれを行う方法はありません。しかし、あなたはそれをシミュレートすることができます。この投稿は次の方法に回答します。

https://stackoverflow.com/a/19121250/283552

お役に立てれば幸いです。

0
IgniteCoders