我最近将iOS应用程序版本1.0更新为2.0版,推送通知无法按预期工作。
在版本1.0中,我要求用户允许我需要设置应用程序图标徽章值的UIUserNotificationTypeBadge
类型的通知。但是,我只在本地设置徽章值,因此没有涉及的远程通知。
在2.0版本中,我现在想使用远程通知来通知用户某些事件。因此,在AppDelegate中,我注册了UIUserNotificationSettings
的所有可用类型:
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
// iOS 8 Notifications
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
else
{
// iOS < 8 Notifications
UIRemoteNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
}
我在2.0版中遇到的问题是我在代理-(void)application:didRegisterUserNotificationSettings:
中获得的notificationSettings设置为app version 1.0中的旧设置。 (我只得到UIUserNotificationsTypeBadge
)
在2.0版中也没有任何提示要求用户提供通知权限。而奇怪的是,在设置中选择了通知样式横幅。 (见下图)
我还发现,为应用类型切换通知的打开和关闭会覆盖旧应用中的设置,我会在-(void)application:didRegisterUserNotificationSettings:
- &gt;中获得预期的用户通知设置。 UIUserNotificationTypeBadge|UIUserNotificationTypeAlert|UIUserNotificationTypeSound
是否有人遇到同样的问题,并找到了一个解决方案,如何以编程方式覆盖旧的通知设置,而无需在设置中手动切换通知开启和关闭?
任何帮助都将受到高度赞赏!
谢谢!