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 回答