我在我的应用中使用UILocalNotification来安排通知。通知工作正常,并在我需要时显示。我没有这个问题。我没有做任何远程/推送通知。
让我感到疑惑的是,我从未在多个应用中看到过您通常看到的推送通知的着名权限对话框。我甚至重置了我的设备并运行了我的应用程序这仍然没有导致权限对话框出现。
如果您的应用仅使用本地通知,或者我没有实施某些实际导致应用请求此权限的方法,是否会显示此权限对话框?
我知道我可以在应用程序启动后实现我自己的对话框,要求用户提供此权限,但我希望Apple能够解决这个问题,特别是因为它在设置应用程序中对待远程和本地通知。
答案 0 :(得分:17)
是的,在iOS8中,本地通知确实需要权限。
The documentation registerUserNotificationSettings:规定
如果您的应用在后台显示警报,播放声音或标记其图标,则必须在启动周期内调用此方法,以请求以这些方式提醒用户的权限。 通常情况下,如果您的应用使用本地或推送通知,则会发出此请求,以提醒用户注意涉及您应用的新信息。
建议您在安排任何本地通知之前调用此方法或向推送通知服务注册。
答案 1 :(得分:11)
看起来本地通知不需要任何用户权限。 “权限”对话框仅显示“推送通知”。我可以在没有任何用户许可的情况下安排/取消本地通知。
答案 2 :(得分:6)
注意:这包括推送通知/远程通知
在iOS7或iOS8上使用Xcode6时 在运行时使用registerUserNotificationSettings:API时进行测试。
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
感谢http://corinnekrych.blogspot.ae/2014/07/how-to-support-push-notification-for.html
答案 3 :(得分:2)
是的,这是对的。本地通知不需要任何操作系统权限。但是,作为一种良好做法,我建议您在申请时为用户提供退出选项。 这可以通过两种方式很好地发挥作用:
答案 4 :(得分:2)
Apple的localLocalNotificationNow和scheduleLocalNotification文档说明,
在安排任何本地通知之前,您必须调用registerUserNotificationSettings:方法,让系统知道您计划向用户显示的警报类型(如果有)。
所以我不确定此页面中的其他人如何说本地通知不需要用户权限。
查看关于同一主题的其他讨论:
Ask for User Permission to Receive UILocalNotifications in iOS 8