web-dev-qa-db-ja.com

アプリを強制終了した後、バックグラウンドフェッチが機能しない

バックグラウンドフェッチを使用してURLからデータを取得しようとしています。私のfuncはデータを取得しようとし、新しいデータがある場合はローカル通知を送信します。アプリを最小化すると、約10〜20分後にバックグラウンドフェッチが機能します。しかし、アプリを強制終了すると(ホームボタンをダブルクリックしてアプリを閉じる)、機能しません。約1時間待ちましたが、うまくいきませんでした。 Androidでバックグラウンドサービスを使用していますが、正常に動作しています。 URLからデータを取得し、アプリが閉じられたときにローカル通知を送信する方法はありますか? Xcode6とSwift1.2を使用しています

12
Meryem Uysal

ユーザーがマルチタスクUIでアプリを強制終了した後は、アプリでバックグラウンドフェッチは発生しません。これは仕様によるものです。

Appleのドキュメント を見てください:

バックグラウンド実行をサポートするアプリは、着信イベントを処理するためにシステムによって再起動される場合があります。ユーザーがアプリを強制終了する以外の理由でアプリが終了した場合、システムはアプリを起動します...

そして

ほとんどの場合、ユーザーがアプリを強制終了した後、システムはアプリを再起動しません。 1つの例外は、ロケーションアプリです。これは、iOS 8以降では、ユーザーによって強制的に終了された後に再起動されます。ただし、それ以外の場合は、アプリをシステムによってバックグラウンドで自動的に起動する前に、ユーザーがアプリを明示的に起動するか、デバイスを再起動する必要があります。

ドキュメントでお気づきのように、アプリが強制終了された場合にアプリが再起動される例外は1つだけです。それは、位置情報サービスを使用することです。残念ながら、これはあなたには当てはまりません。

また、アプリがユーザーによって強制的に強制終了されたかどうかを検出することはできません。これを確認してください StackOverflowの回答

24
Alex

ユーザーがバックグラウンドからアプリを強制終了した後、バックグラウンドフェッチはアプリで更新されません。それは不可能

4
Bhushan Rana