web-dev-qa-db-ja.com

didRegisterForRemoteNotificationsWithDeviceTokenはいつ呼び出されますか?

DidRegisterForRemoteNotificationsWithDeviceTokenについては多くの質問がありますが、それらはすべて非常に直接的な質問を避けており、正確な答えを見つけることができないようです。

他のすべての方法で通知用に適切に設定され、適切なネットワーク接続を持つアプリの場合:didRegisterForRemoteNotificationsWithDeviceTokenが呼び出されるのはいつですか?可能な選択肢は次のとおりです。

  1. アプリが起動するたびに
  2. プッシュ通知を受け入れるためのユーザーへの最初のプロンプトの後のみ
  3. 他に何か?
29
jwl

UIApplicationでこのメソッドを呼び出した後、リモート通知の登録が成功すると、アプリケーションデリゲートはメソッドを呼び出します。

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

準拠: http://developer.Apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

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

さて、さらに詳しく説明するため、通常、アプリはregisterForRemoteNotificationTypesdidFinishLaunchingWithOptions:(NSDictionary *)launchOptionsアプリケーションデリゲートで。したがって、application:didRegisterForRemoteNotificationsWithDeviceTokenは通常、アプリケーションの起動後すぐに呼び出されます。

Edit:application:didRegisterForRemoteNotificationsWithDeviceTokenは、最初以降の後続登録のために呼び出されます。

29

アプリが最初に実行されると、リモート通知を許可するかどうかをユーザーに尋ねます。 「はい」と言うと、その時点で、およびアプリが最初に開かれたときにこの関数が起動されるたびに、didRegisterForRemoteNotificationsWithDeviceTokenが起動されます。彼らが「いいえ」と言った場合、設定に入ってアプリで通知を許可しない限り、起動されません。

9
rooster117

多くの理由が考えられますが、いくつかの理由を確認してください

  • シミュレーターでアプリを実行すると、シミュレーターでプッシュ通知がサポートされないため、application:didFailToRegisterForRemoteNotificationsWithError:メソッドが呼び出されます。

  • 接続していない場合は、インターネット接続を確認してください。

詳細情報の確認 リンク

1
Denny