8

私は、すべて同じ発行元の下で、すべてプッシュ通知が有効になっているいくつかの iOS アプリに取り組んでいます。を呼び出すとregisterForRemoteNotificationTypes、プッシュ通知を許可または禁止するユーザー プロンプトが表示されますが、ユーザーがオプションを選択する前にapplication:didRegisterForRemoteNotificationsWithDeviceToken:、トークン データを使用して呼び出されます。そして、OK を押すと再び呼び出されます。これは正常ですか?

また、複数のアプリが同じデバイスで実行されている場合、同じトークンを取得しているように見えます。

4

2 に答える 2

6

これはAppleドキュメントからのものです。

このメッセージを送信すると、デバイスはApplePushServiceへの登録プロセスを開始します。成功すると、アプリケーションデリゲートはapplication:didRegisterForRemoteNotificationsWithDeviceToken:メソッドでデバイストークンを受け取ります。登録が成功しなかった場合、デリゲートはapplication:didFailToRegisterForRemoteNotificationsWithError:メソッドを介して通知されます。アプリケーションデリゲートがデバイストークンを受信した場合、そのプロバイダーに接続してトークンを渡す必要があります。

プッシュ対応アプリがプッシュ通知に初めて登録するとき、iOSはユーザーにそのアプリの通知を受信するかどうかを尋ねます。ユーザーがこのアラートに応答すると、デバイスが復元されるか、アプリが少なくとも1日アンインストールされない限り、アラートは再度表示されません。

あなたが観察していることは正常だと思います。application:didRegisterForRemoteNotificationsWithDeviceToken ユーザーが許可を与えた場合にのみ呼び出されるという言及はありません。NSUserDefaultsでデバイストークンをキャッシュし、このメソッドで新しいトークンがキャッシュされたトークンと等しくないかどうかを確認することで、最適化できると思います。

于 2013-03-20T16:42:10.273 に答える
2

これは古い質問ですが、この問題に遭遇したばかりで、リモート通知のバックグラウンド モードに関連しているようです。application:didRegisterForRemoteNotificationsWithDeviceTokenこのバックグラウンドモードがオンになっている場合にのみ、プッシュ通知の許可を受け入れる前にiPhoneで呼び出されます。

于 2017-01-13T18:08:00.667 に答える