unregisterForRemoteNotifications不适用于iOS8 – 推送通知

我决定从我的应用程序closures“提醒”开关控制通知。 我在我的应用程序中添加了这些行,使其支持iOS 7和iOS 8,并在closures推送通知时工作。 但是当我决定打开开关并closures应用程序时,当我再次打开它,它回到OFF,而不是打开。 所以我必须去设置 – >通知中心 – >“我的应用程序”,并把所有的东西都打开了,因为它们是closures的…很奇怪,当我在iOS 7上testing它正在工作,但不适用于iOS 8.任何build议表示赞赏。 谢谢。

- (IBAction)reminderSwitchToggled:(id)sender { UIApplication *application = [UIApplication sharedApplication]; if ([sender isOn]) { #ifdef __IPHONE_8_0 if(NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; } else #endif { [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge| UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeSound]; } } else { #ifdef __IPHONE_8_0 if(NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes: (UIUserNotificationType) (UIUserNotificationTypeNone) categories:nil]]; [application unregisterForRemoteNotifications]; } else #endif { [application unregisterForRemoteNotifications]; } } } 

您应该在服务器端实施禁用推送通知。 苹果的文件说,你应该打电话

 [[UIApplication sharedApplication] unregisterForRemoteNotifications]; 

只有当你不再在应用程序提供通知。 链接

另一方面,iOS8提供API来打开Settings.app,用户可以使用开关控制禁用应用程序的通知。 用法示例:

 if (&UIApplicationOpenSettingsURLString != NULL) [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];