4

目標 c - ユーザーがアプリの通知設定を変更したときに検出するで説明されているように、ユーザーがプッシュ設定を無効にしているかどうかを確認する可能性があることは知っています。

上記の記事によると、ユーザーがアプリケーションのプッシュ通知を無効にしている場合でも、プッシュ通知は送信されます。私が理解しているように、常にプッシュ通知に登録する必要がありapplicationDidFinishLaunching:ます。

ほとんどの例は次のようになります。つまり、ユーザー設定は無視されます。

- (void)applicationDidFinishLaunching:(UIApplication *)app {
    // other setup tasks here....

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

}

アプリケーションがこれらの設定を考慮する必要がある場合、正しい実装はどのようになりますか?

この質問をする理由は、プッシュ通知を無効にしているのにプッシュ通知が届くという苦情が多くのお客様から寄せられているためです。これは iOS 6 に適用されるようです。

ユーザーがプッシュ通知を無効にしている場合、開発者として対処する必要がありますか? ドキュメントを何度も読み返しました。特にapplication:didReceiveRemoteNotification:. ユーザーがプッシュ通知を無効にしているときに呼び出されるかどうかは記載されていません。

4

1 に答える 1

3

これらのメソッドを実装して、デバイスが登録されているかどうかを確認してください

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)_deviceToken {
        if ([application enabledRemoteNotificationTypes] < 4) {
         NSLog(@"Notifications are disabled for this application");
    return;
        }
      // The device is registered for notifications
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    NSLog(@"FAILED TO REGISTER FOR PUSH NOTIFICATIONS");
    NSLog(@"%@", error.userInfo);
}

アプリが起動されるたびにプッシュ通知に登録しても問題ありません。ただし、上記のメソッドを実装して、ユーザーがアプリの通知を有効または無効にしたかどうかを確認する必要があります。

于 2012-12-03T18:21:15.677 に答える