1

Stack Overflowで同様の質問がありましたが、何も解決していません。iOSはアプリが強制終了されたときにプッシュ通知を受け取りません

私はFirebase Cloud Messagingを使用してアプリケーションでプッシュ通知を送信しています。受信したメッセージをローカルデータベースに保存しています。私のアプリがアクティブまたはバックグラウンドで、私のアプリは通知(適切に呼ばれるデリゲートメソッド)を受信することができますが、アプリケーションが強制終了されているかどうか、また、デバイスが通知を受け取り、通知センターアプリがアイコンで起動されたときに呼び出されるデリゲートメソッドはありません。ユーザーが通知センターで[メッセージ]をクリックすると、アプリは起動されますが、クリックされたメッセージだけが受信され、すべてではありません(複数の通知が受信された場合)。 Appleによる - ユーザーが強制終了した場合、システムは自動的にアプリケーションを起動しません。その状況では、システムが自動的にアプリを起動しようとする前に、ユーザーはあなたのアプリを再起動したり、デバイスを再起動したりする必要があります

でも、ユーザーがアプリを起動しても、受信した通知は受信せずに通知センターにも表示されます。

  • 私のアプリは何のVoIP機能を持っていない:ここでは

    はアプリが続くポイントです。

  • コンテンツ利用可能は1に設定されています。
  • バックグラウンドのリモート通知を受信できるようになっています。
  • 送信されたすべての通知が受信され、通知センターに表示されました。

{ 
    aps =  { 
     alert =   { 
      body = "Push Notification Test Message"; 
      title = Push Notification; 
     }; 
     badge = 1; 
     "content-available" = 1; 
     sound = default; 
    }; 
    "gcm.message_id" = "0:1499340350307980%361a2e5b361a2e5b"; 
    m = "Push Notification Test Message"; 
    tag = m; 
} 
+0

アプリが殺されたときに、デバイスに通知を取得しましたか? – Nirmalsinh

+0

はい、私のデバイスは私のアプリの状態に関係なく、すべての通知を受け取ります。 – Soniya

+0

私は自分の答えを加えました。親切にチェックしてください。 – Nirmalsinh

答えて

3
  1. アプリはメモリ内に終了するか、いない余儀なくされている場合は、あなたのアプリが(すなわち。1へのContent-利用できるセット)サイレント通知を受信しません。 上記の条件ではプッシュ通知のみが受信されます。

  2. 通知センターで[メッセージ]をクリックすると、アプリが起動し、メッセージをクリックしたユーザーだけが代理人の方法で受信されます。通知トレイのすべてのメッセージにアクセスすることはできません。

0

アプリはプッシュ通知の配信に頼るべきではありません。プッシュ通知の配信は保証されていません。

アプリが終了していない場合でも、すべての通知が届かない場合があります。たとえば、デバイスが飛行機モードで複数の通知が送信された場合、デバイスがオンラインに戻ったときに最後の通知のみが配信されます。

アプリは、起動時や通知を受け取って「追いつく」ために新しいメッセージがないかサーバーに確認する必要があります。

サイレント通知にメッセージペイロードを含めることも考えられます。これは、あなたのアプリを開くようにあなたのアプリが終了した場合、ユーザに表示されます。

+0

アプリの確認方法をさらに教えてください。どのくらい頻繁にすべきですか? 'HEAD'リクエストを使うべきか?私はこれらの質問(ここではhttps://stackoverflow.com/questions/45018280/app-architecture-when-state-changing-apns-fails)を尋ねましたが、これまでに一回の返信やコメントはありませんでした。私がdidFinishLaunchingWithOptionsに追加しましたが、まだ動作していない返信を – Honey

0

アプリが実行されていない場合、アプリケーションのプッシュ通知を受け取る方法はありません。これは制限です。あなたは地元の通知を取得してクリアすることしかできません。したがって、問題を解決する別の方法は、送信時にバックエンドに通知を保存することです。その後、アプリケーションを起動した後、サーバーから通知リストを取得し、IDと一致させることができます。通知の再生負荷で必要なパラメータを送信できます。

0

任意の通知のタップからアプリケーションが開いているときにプッシュ通知の方法を処理する必要があります。通知アプリケーションをタップするとすぐに目を覚まして昼食します。

didFinishLaunchingWithOptionsで

、あなたが条件の下に置く必要があります。

if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) { 
     NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithDictionary:[launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]]; 
    } 

通知をタップしたときにもこの方法を下回ると呼ばれる:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 
{ 
} 
+0

に追加できれば幸いです – Soniya

関連する問題