2013-09-03 11 views
11

When is didRegisterForRemoteNotificationsWithDeviceToken called?と多少似ています。didRegisterForRemoteNotificationsWithDeviceTokenが2回呼び出されましたか?

ユーザー最初アプリをインストールし、それが通知を受け入れるかどうかを求められた場合、ユーザはそれを受け入れた場合、呼び出されdidRegisterForRemoteNotificationsWithDeviceTokenでしょうか?

私が現在registerForRemoteNotificationTypesに電話をかけているのは、ユーザーがログインしたりアカウントを作成した後です。

その後、起動すると、registerForRemoteNotificationTypesをAppDelegateで呼び出さなくても、didRegisterForRemoteNotificationsWithDeviceTokenデリゲートが呼び出されます。

私はドキュメントとサンプルコード従っている場合:デバイストークンを要求し、プロバイダにアプリケーションが起動するたびにそれを渡すことによって

を、あなたはプロバイダがデバイスの現在のトークンを持っていることを確実にするために役立ちます。

- (void)applicationDidFinishLaunching:(UIApplication *)app { 

    // other setup tasks here.... 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:... 
} 

しかし、アプリが起動し、デリゲートが二回呼ばれるトークンを要求することもできます。

必要な質問と明確さのカップル:プロンプトが表示されるようにするために起こりプロンプト初期の場合

  1. は、registerForRemoteNotificationTypesのための呼び出しが行われなければなりませんか?しかし、AppDelegateでこれを手動で呼び出すと、デリゲートが2回呼び出されます。そんな風だろ?

  2. ユーザが最初のプロンプトを受け入れると、didRegisterForRemoteNotificationsWithDeviceTokenは自動的に呼び出されますか?または、AppDelegateで registerForRemoteNotificationTypesを呼び出す必要がありますか?しかし、その後、デリゲートは今後の打ち上げのために2回呼び出されますか?

  3. ユーザーが設定を介して拒否し、後でそれを受け入れると、どうなりますか?プロンプトが表示されるの

UPDATE起こりプロンプト初期の場合

0は、registerForRemoteNotificationTypesのための呼び出しが行われなければなりませんか?しかし、AppDelegateでこれを手動で呼び出すと、デリゲートが2回呼び出されます。そんな風だろ?これは当てはまりません。実際にはAppDelegateで2 registerForRemoteNotiicationTypesが作成されていることが判明しました。

答えて

6

ユーザが最初のプロンプトを受け入れると、自動的にdidRegisterForRemoteNotificationsWithDeviceTokenが呼び出されますか? いいえ、「アクセス許可」をクリックしたときにリモート通知登録プロセスが開始されましたが、didRegisterForRemoteNotificationsWithDeviceTokenメソッドはAPNS登録が成功した場合にのみ呼び出されます。

アプリケーションがあらかじめ登録されている場合、 registerForRemoteNotificationTypesを呼び出す:デリゲートにデバイストークンを渡し、オペレーティングシステム で結果をすぐに発生させることなく 追加のオーバーヘッド

アプリケーションは次のように起動するかどうかを決定することができ

ユーザがアクションボタンをタップした結果、または アプリケーション状態を調べて、通知が実行中のアプリケーションに配信されたかどうかを確認します。 アプリケーションのデリゲートの実装で:didReceiveRemoteNotification:または application:didReceiveLocalNotification:メソッドは、 applicationStateプロパティの値を取得し、評価します。値が UIApplicationStateInactiveの場合、ユーザーはアクションボタンをタップしました。 の値がUIApplicationStateActiveの場合、通知は に届いたときに最前面になりました。

+0

ユーザーがプロンプトを受け入れて登録に成功した場合にのみ呼び出されます。それ以外の場合、失敗メソッドは呼び出されますか?ユーザーがプロンプトを拒否した場合はどうなりますか?エラーメソッドが呼び出されますか? –

+0

ユーザーがプロンプトを拒否した場合、彼はAPNS登録プロセスを開始していないため、エラーメソッドは呼び出されません。 didFailToRegisterForRemoteNotificationsWithErrorメソッドは、登録失敗時にのみ呼び出されます。 – thatzprem

1

いいえ。このメソッドは、アプリの起動時に一度しか呼び出されません。 2回呼び出された場合、コードから呼び出されます。あなたは

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings 

に行くに続いdidFinishLaunchingWithOptions

[application registerUserNotificationSettings:mySettings]; 
[application registerForRemoteNotifications]; 

のようなコードを入れている場合は、ので、このコードを削除[application registerForRemoteNotifications];

を呼ぶ可能性があることであることを確認してみてください。

関連する問題