2

ほとんどのドキュメントでは、起動時にリモート通知を登録し、トークンを受信したら、他のアプリ固有の設定 (ユーザー、アプリ内プッシュ設定など) を使用してこれをサーバーにプッシュすることをお勧めします。ただし、次のコーナーケースの処理方法がわかりません。

ユーザーが接続せずにアプリを起動すると、トークンは受信されません。しばらくすると、接続が復元されます。ユーザーがアプリの設定を変更しようとすると、設定とトークンを含むサーバーへの投稿が促されます。ただし、トークンはまだ nil です。

代わりに、設定を投稿する前に毎回通知を登録する方がよいのではないでしょうか? 起動時にこのトークンを要求する必要はないように思われます。これは、必要とされない可能性があり、さらに悪いことに、必要なときに nil になる可能性があるためです。

4

2 に答える 2

1

やはりアプリ起動時のプッシュ通知登録がベストだと思います。デバイス トークンを取得したら、すぐにサーバーに送信する必要はありません。デバイスにローカルに保存できます。ロジックでデバイス トークン (およびその他の設定) をサーバーに送信する必要がある場合は、ローカルに保存されたトークンを取得します。保存されたトークンが null の場合は、登録を再試行し、トークンを取得したらサーバーに送信します。

以前にローカルに保存されたデバイス トークンがある場合でも、アプリの起動時にプッシュ通知を登録する必要があることに注意してください (Apple がデバイス トークンを変更する可能性が低いため)。

于 2013-07-03T14:37:57.337 に答える
1

Apple は、アプリがフォアグラウンドになるたびに (アプリを開くとき、またはバックグラウンドから戻ったとき)、 register を呼び出すことをお勧めします。

この呼び出しは、プッシュ通知トークンを取得する方法として機能するだけでなく、このアプリケーションがまだプッシュ通知の受信に関心があることを Apple に知らせるためにも使用されます。このメソッドを 1 回だけ呼び出すか、めったに呼び出さず、プッシュ通知を頻繁に送信しない場合、サーバーに保存されている、使用しているトークンが有効なトークンではなくなるというシナリオに遭遇する可能性があります (十分な回数の後)。トークンがデバイスによって確認されずに時間が経過すると、Apple はトークンを有効と見なしなくなります。)

于 2013-07-04T08:20:28.507 に答える