私のアプリでは、毎日のサイレント プッシュを使用してアプリ内でいくつかの計算をトリガーし、計算結果に基づいてローカル通知をトリガーしています。
例: 毎日の目標。
サイレント通知がアプリに到達したら、バックグラウンド メソッドをトリガーしてユーザー データを計算し、ユーザーのデータが目標を達成したかどうかを比較し、そうであればローカル通知をトリガーして、ユーザーがアプリを開いて確認できるようにします。
一貫して機能していません。取得できる場合と取得できない場合があります。私がデバッグしたとき、私が見たのは、ユーザーがアプリを再度開くか、サイレントプッシュを再度トリガーした場合にのみ、実行が一時停止され、実行が再開されることでした。バックグラウンド実行 (計算) が一時停止する理由がわかりません。プッシュをトリガーするか、アプリを手動で開こうとすると、ブレークポイントが戻って表示され、一時停止した場所から続行されます。
時間制限のせいなのかな??
アップデート:
私は UrbanAirshipSDK を使用しており、いくつかのハンドラーがオーバーライドされており、以下のメソッドを使用して通知を処理しています。これは appdelegate に記述されており、アプリがバックグラウンドにあるときに通知を受け取ると呼び出されます。
/**
* Called when a push notification is received while the app is running in the background
* for applications with the "remote-notification" background mode.
* Overridden by receivedBackgroundNotification:fetchCompletionHandler.
*
* @param notification The notification dictionary.
*/
- (void)receivedBackgroundNotification:(NSDictionary *)notification;
最初にペイロードで content-available をチェックし、サイレントとして扱い、計算を行います。これは断続的には正常に機能しますが、一貫しては機能しません。発売日が近づいており、本当に心配しています。