当用户禁用推送时,iOS 应用程序应该做什么?

Joh*_*son 5 iphone apple-push-notifications ios

我知道可以检查用户是否禁用了推送设置,如Objective c - 检测用户何时更改应用程序的通知设置中所述。

根据上面的文章,即使用户禁用了应用程序的推送通知,也会发送推送通知。据我了解,我应该始终在applicationDidFinishLaunching:.

大多数示例如下所示,即忽略用户设置。

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

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

}
Run Code Online (Sandbox Code Playgroud)

如果应用程序应该考虑这些设置,那么正确的实现是什么样的?

我之所以问这个问题,是因为我们有很多客户抱怨,尽管他们禁用了推送通知,但他们还是收到了推送通知。这似乎适用于 iOS 6。

作为开发人员,我是否应该处理用户禁用推送通知的情况?我已经一遍又一遍地阅读文档。特别是application:didReceiveRemoteNotification:. 它没有说明当用户禁用推送通知时是否调用它。

Nit*_*bur 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);
}
Run Code Online (Sandbox Code Playgroud)

每次启动应用程序时都可以注册推送通知。但您必须确保实现上述方法才能了解用户是否启用或禁用了应用程序的通知。