unregisterForRemoteNotifications对iOS8不起作用 - 推送通知

时间:2014-08-23 01:37:18

标签: ios objective-c push-notification ios8 xcode6

我决定关闭"提醒"从我的应用程序切换控制。我在我的应用程序中添加了这些行,使其支持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];

           }
   }
}

1 个答案:

答案 0 :(得分:5)

您应该在服务器端实现禁用推送通知。 Apple文档说你应该打电话给

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

仅当您不再在应用中提供通知时。 Link

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

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