2013-09-25 8 views
5

私のアプリは、サーバーからAppleバックエンドに送信されたAPNを受信して​​います。もちろん、通知がユーザーのデバイスに届くと、ユーザーはアプリを開くことができません。その間、私のサーバーはもっと多くの通知を送るかもしれません。それらはすべて、通知が処理されるときに重要なユーザーデータを含んでいます。どのように対処するのですか? iOSはバンドルされず、私にバッチを与えませんか?異なる時刻に到着したユーザーデータで複数のプッシュ通知を処理する方法は?

私はそれに取り組むつもりですが、どれも単純ではありません。

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

他に何かありますか?何か簡単に私は行方不明ですか?

+0

@Virussmca多くの人がAPNを扱うことになるでしょうか?私は誰かがそのことをうまくやってくれることを期待していました。提示されたオプションは、より多くのハッスルを作成しますが、私はそれらを処理しなければならないのではないかと心配しています。また、UIApplicationの複数のアプリエントリポイントを考慮する必要があるようです。 – Schultz9999

答えて

1

4番は正しいアプローチです。 iOS7を除き、APNを受け取ったときにアプリコードが実行されるという保証はありません。だから、あなたのアプリが起動するときには、それが表示されるべき新しい情報があるかどうかをあなたのサーバにチェックする必要があります。

これをにコードするのが最も簡単です。 APNの情報に頼るのではなく、サーバーに最新の情報を表示するよう依頼してください。ナビゲートする新しい情報を決定するためにのみAPNの情報を使用して、ユーザーがタップした内容をアプリに表示させます。

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

+0

あなたの答えは結局 'content-available:1'を決して持っていないことを示唆していません。基本的に、あなたは静かな通知を使用しないと言っただけです... – Honey

関連する問題