iOS8 - 请求远程推送通知

Posted

技术标签:

【中文标题】iOS8 - 请求远程推送通知【英文标题】:iOS8 - Asking for remote push notifications 【发布时间】:2014-10-02 08:10:56 【问题描述】:

关于ios8中用户接受推送通知(以及徽章等通知)变化的两个问题。

1) 我正在使用当前的方法,在 iOS7 和 iOS8 上都可以正常工作

if ([[[UIDevice currentDevice] systemVersion] floatValue]>= 8.0) 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
(UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert)
categories:nil];        
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];        
 else 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

这完全可以正常工作,因为 push 和 alert 正在工作,并且我在 didRegister 委托方法中获得了令牌,但从来没有像以前那样弹出窗口询问我。即使我从手机中完全删除该应用程序? 为什么?操作系统是否会保留应用程序的内存隐私设置,即使它们已被删除?

2) 我看到有人建议在以下代表中请求远程通知

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
        
    NSLog(@"registered for notifications settings %@",notificationSettings);        
    //register to receive notifications
    [application registerForRemoteNotifications];
 

为什么?

【问题讨论】:

【参考方案1】:

来自文档- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings这个方法回调将在调用-[UIApplication registerUserNotificationSettings:]时进行。用户授予应用程序的设置将作为第二个参数传入。这意味着,一旦我们获得用户权限(或者如果我们之前已经获得),那么这个方法就会调用,我们可以通过调用 [application registerForRemoteNotifications] 来注册应用程序以进行远程通知。

【讨论】:

以上是关于iOS8 - 请求远程推送通知的主要内容,如果未能解决你的问题,请参考以下文章

远程推送通知注册失败

在 iOS 8 中取消注册推送通知

推送通知声音在 iOS8 上不起作用

无法在 iOS8 上设置交互式推送通知

无法为推送通知注册设备 (iOS8)

IOS 8 推送通知检查返回错误的 UIRemoteNotificationType