8

アプリを初めてインストールしてプッシュ通知に登録する場合、アプリはアラートを受信するかどうかを尋ねます。これは、アプリを削除した後でも、設定に永久に保存されています。

基本的に、トークンを保存するには、次のようにします。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *token = [[[deviceToken description]
            stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
            stringByReplacingOccurrencesOfString:@" " withString:@""];
    [[NSUserDefaults standardUserDefaults] setValue:token forKey:kDeviceTokenKey];
}

ただし、問題は、アプリがデバイスから削除されると NSUserDefaults がワイプされますが、プッシュ設定はワイプされないことです。したがって、再度要求することはありません。したがって、デリゲート メソッドを再度呼び出さないでください。したがって、トークンはもうありませんが、プッシュはまだアクティブになっています。

説明されているシナリオでトークンを取り戻すチャンスはありますか?

4

2 に答える 2

23

プッシュ通知プログラミングガイドより

アプリケーションは、起動するたびに登録し、そのプロバイダーに現在のトークンを提供する必要があります。registerForRemoteNotificationTypes: メソッドを呼び出して、登録プロセスを開始します。

アプリケーションが起動するたびにデバイス トークンを要求してプロバイダーに渡すことで、プロバイダーがデバイスの最新のトークンを確実に取得できるようになります。ユーザーが、バックアップが作成されたデバイスまたはコンピューター以外のデバイスまたはコンピューターにバックアップを復元する場合 (たとえば、ユーザーがデータを新しいデバイスまたはコンピューターに移行する場合)、アプリケーションを少なくとも 1 回起動して復元する必要があります。再び通知を受け取ります。ユーザーがバックアップ データを新しいデバイスまたはコンピューターに復元するか、オペレーティング システムを再インストールすると、デバイス トークンが変更されます。さらに、デバイス トークンをキャッシュしてプロバイダーに渡さないでください。必要なときはいつでもシステムからトークンを取得してください。アプリケーションが以前に登録されている場合は、registerForRemoteNotificationTypes を呼び出します。

質問に答えるには:registerForRemoteNotificationTypes:起動するたびに呼び出し、最新のトークンを使用します。

于 2013-06-07T11:14:12.060 に答える