38

didRegisterForRemoteNotificationsWithDeviceToken については多くの質問がありますが、それらはすべて、正確な答えが見つからないように見える非常に直接的な質問を回避しています。

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

  1. アプリを起動するたびに
  2. プッシュ通知を受け入れるようにユーザーに最初に促した後のみ
  3. 他の何か?
4

3 に答える 3

34

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

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)タイプ

によると:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

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

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

編集: application:didRegisterForRemoteNotificationsWithDeviceToken は、最初の登録後に引き続き登録のために呼び出されます。

于 2012-06-12T00:58:50.083 に答える
11

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

于 2012-06-11T17:56:30.453 に答える