5

私のアプリは、サーバーから Apple バックエンドに送信された APN を受信して​​います。通知がユーザーのデバイスに届くと、当然、ユーザーはアプリを開くことはできません。それまでの間、私のサーバーはさらに通知をプッシュする可能性があります。それらにはすべて、通知が処理されるときに重要なユーザー データが含まれています。では、どのように対処すればよいでしょうか?iOSはバンドルしてバッチをくれませんよね?

これに対処する方法を次に示しますが、どれも単純ではありません。

  1. サーバーは未確認のデータを追跡し、新しいリクエストが到着すると、常にすべての新しい通知のバッチを送信し、カウントをバッジ カウントとして反映します。
  2. 通知ポップアップをテーピングすると、クライアントが開きます。この場合、必要なすべてのデータが にありdidReceiveRemoteNotificationます。 また
  3. クライアントは通知ポップアップを無視し、アプリ アイコンをタップしてアプリを (おそらく後で) 開きます。この場合didReceiveRemoteNotification、 は呼び出されないため、アプリは必要なすべてのデータをサーバーからフェッチする必要があります。 また
  4. サーバーはユーザー データを送信することはなく、クライアントは .NET でデータを起動または取得するたびに常に新しいデータをチェックしますdidReceiveRemoteNotification

他に何か?私が見逃しているもっと簡単なものはありますか?

4

1 に答える 1

1

4番は正しいアプローチです。iOS7 を除き、APN の受信時にアプリ コードが実行される保証はありません。そのため、アプリの起動時に、表示する必要がある新しい情報についてサーバーに確認する必要があります。

これをコーディングして、APN の情報に依存するのではなく、表示する最新の情報を常にサーバーに要求するのが最も簡単です。APN 内の情報は、ナビゲートする新しい情報を決定するためだけに使用して、ユーザーがタップしたものをアプリが表示するようにします。

これは iOS7 で変更されremote-notification、プッシュ メッセージが到着するたびにバックグラウンド モードを使用して起動できるようになりました。https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandlerを参照してください。

于 2013-09-25T09:57:03.470 に答える