iOS 8.1中无法生成设备令牌。

4

enter image description here 我使用以下方法实现了推送通知的生成。

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

设备令牌通常会正确生成,但是当关闭声音和应用程序图标徽章并将警报样式设置为无(设置->应用程序名称->通知),设备令牌不生成。这个问题只出现在iOS 8设备上,在iOS 7设备上它能正常工作。请问有人能提供解决方案吗?

如果您禁用了通知,如何获取设备令牌? - Anbu.Karthik
设备令牌已启用。请参见图片。 - user4501460
那么,当您使用不同的方法进行注册时,错误是否也会发生?可能是弃用的方法使应用程序的注册过程变得模糊。请确保正确注册(如果您还想支持iOS7及更早版本):if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])。 - Lepidopteron
@Lepidopteron 当声音和应用图标徽章开关打开时,它可以正确工作。 - user4501460
1个回答

1
这更像是iOS7的一个错误。通知有3种提示方式:声音/标记/警报。 如果禁用声音和标记,并将警报样式设置为无(即禁用警报),则没有办法呈现通知。
我认为这是电池优化:如果没有通知用户的方法,为什么要将他注册到远程通知?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接