我决定关闭"提醒"从我的应用程序切换控制。我在我的应用程序中添加了这些行,使其支持iOS 7和iOS 8,并且当我关闭推送通知时它正在工作。但是当我决定打开开关并关闭应用程序时,当我再次打开它时它又回到OFF而不是打开。所以我必须去设置 - >通知中心 - > "我的应用"然后把所有的东西都重新打开,因为它们已经关闭......非常奇怪的是,当我在iOS 7上测试时,它正在工作但不适用于iOS 8.任何建议都表示赞赏。感谢。
- (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];
}
}
}
答案 0 :(得分:5)
您应该在服务器端实现禁用推送通知。 Apple文档说你应该打电话给
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
仅当您不再在应用中提供通知时。 Link
另一方面,iOS8提供API来打开Settings.app,用户可以使用开关控件禁用应用程序的通知。使用样本:
if (&UIApplicationOpenSettingsURLString != NULL)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];