2013-03-19 9 views
7

すべてのプッシュ通知が有効になっている、同じパブリッシャの下にあるいくつかのiOSアプリで作業しています。 registerForRemoteNotificationTypesに電話すると、ユーザーにプッシュ通知を許可するかどうかを確認するメッセージが表示されますが、application:didRegisterForRemoteNotificationsWithDeviceToken:で呼び出され、の前にユーザーがオプションを選択します。 OKを押すと再び呼び出されます。これは正常ですか?APNS didRegisterForRemoteNotificationsがiOSの通知を許可する前に呼び出されました

注:複数のアプリが同じデバイスで実行されているときに同じトークンを表示するように見えます。

+0

あなたの主な質問についてはわかりませんが、ノートの場合は正常です。同じデバイス上のすべてのアプリケーションが同じデバイストークンを取得します。 – Eran

+0

プッシュ通知を受け取るために既にそのアプリを許可していることがあります。設定 - >通知でアプリを検索し、アプリが既に存在するかどうかを確認します。 – msk

+0

@MSK - すでに許可している場合は、プッシュ通知を許可するかどうかをユーザーに尋ねるシステムプロンプトを表示してはいけません。私はそこに間違っていますか? –

答えて

6

これはApple docsのものです。

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.

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

+0

プッシュ通知がシステムレベルで無効になっている場合は、トークンを取得するのは非公式です。しかし、実際には、私は設定に移動し、このアプリケーションのすべてのプッシュのものを無効にする場合、私はまだトークンで呼び戻される。あなたが正しいと思います。 –

+0

アプリがバックグラウンドのときにユーザーがプッシュ通知を有効にするのは何ですか?あなたがそれを起動すると、あなたのサーバーにトークンが存在せず、バックグラウンドから起動したときにiOSはdidFinishLaunchingWithOptionsを呼び出さない。 – msk

2

これは古い問題ですが、この問題が発生したばかりで、リモート通知のバックグラウンドモードに関連しているようです。 application:didRegisterForRemoteNotificationsWithDeviceTokenは、このバックグラウンドモードが有効になっているときにのみ、プッシュ通知のアクセス許可を受け入れる前に私のiPhoneで呼び出されます。

関連する問題