したい: アプリケーションがバックグラウンドにある間 (電話がスリープモードになっている間も含む)、プッシュ通知 (サイレント) の受信時に http 要求をトリガーできるようにしたい。
前提:プッシュ通知は、バックグラウンドで実行されているアプリケーションを起動します(スリープ中でも) https://discussions.apple.com/thread/3650066:新しいルーターを提案する解決策を提供しますが、これはWiFiに接続されている電話にのみ適用されます. セルラー接続を使用しています。
試行: 正しいデリゲート メソッドを使用していることを確認しました didRecieveRemoteNotification
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
NSLog(@"Remote Notification Recieved From:\t%@", userInfo[@"requestorSessionId"]);
[_agentService handleAgentLocationRequest:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
受信したプッシュ通知をログに記録しようとしましたが、電話がスリープ モードになっていると表示されません。(iOS コンソールからログを読み取るhttp://lemonjar.com/iosconsole/ )
アプリがフォアグラウンドまたはバックグラウンド (非スリープ モード) にある間、ログ ステートメントを表示できるため、通知が機能していることを確認しました。
プッシュ通知ペイロードの一部としてサウンドの再生を追加しました。通知を受信したときにサウンドの再生を聞くことができます (スリープモード) が、アプリケーションが通知を処理することはありません。
また、プロジェクトの機能の下にある UIBackground モードでリモート通知を有効にしています。
アップデート
ローカル ネットワークを介してテストしていたことに気付きました。電話がスリープ状態になると、WiFi ラジオもオフになり、ポート フォワーディングなしではローカル IP に接続できなくなります。
今回の新発見でも。私はまだ特定の iPhone で問題を抱えています。この場合、iPhone 6 はプッシュ通知を短時間受信し、その後二度と受信しません。
事前に感謝します。スレッドを監視して、必要に応じてより多くの情報を提供します。