25

我在我的应用程序中使用 UILocalNotification 来安排通知。通知工作正常,并在我需要时显示。我对此没有意见。我没有做任何远程/推送通知。

让我想知道的是,我从未见过您通常在多个应用程序中看到的用于推送通知的著名权限对话框。我什至重置了我的设备并运行了我的应用程序。那仍然没有导致权限对话框出现。

如果您的应用程序仅使用本地通知,或者我没有实现某些实际导致应用程序请求此权限的方法,此权限对话框是否不会显示?

我知道我可以在应用程序启动后实现我自己的对话框,要求用户提供此权限,但我希望 Apple 能够处理好这一点,特别是因为它在“设置”应用程序中对远程和本地通知的处理方式相同。

4

5 回答 5

20

是的,在 iOS8 中,本地通知确实需要权限。

registerUserNotificationSettings:文档规定

如果您的应用程序在后台显示警报、播放声音或标记其图标,则您必须在启动周期中调用此方法以请求以这些方式提醒用户的权限。通常,如果您的应用程序使用本地或推送通知来提醒用户注意涉及您的应用程序的新信息,则您会提出此请求。

建议您在安排任何本地通知或注册推送通知服务之前调用此方法。

于 2014-10-30T15:09:17.900 回答
11

看起来本地通知不需要任何用户权限。权限对话框仅显示推送通知。我可以在没有任何用户许可的情况下安排/取消本地通知。

于 2013-05-16T22:02:52.720 回答
6

注意:这包括推送通知/远程通知

当使用 Xcode6 和 iOS7 或 iOS8 时测试 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

于 2014-12-19T04:28:51.790 回答
3

Apple 的 presentLocalNotificationNow 和 scheduleLocalNotification 文档说,

在安排任何本地通知之前,您必须调用 registerUserNotificationSettings: 方法让系统知道您计划向用户显示的警报类型(如果有)。

所以我不确定这个页面中的其他人是如何说本地通知不需要用户权限的。

查看有关同一主题的其他讨论:

请求用户权限以在 iOS 8 中接收 UILocalNotifications

于 2016-02-17T21:53:13.917 回答
2

对,那是正确的。本地通知不需要任何操作系统权限。但是,作为一种好的做法,我建议在这种情况下从您的应用程序中为用户提供一个退出选项。这将通过两种方式很好地工作:

  1. 一个恼火的用户,因为一次又一次地看到本地通知而感到沮丧,不知道推送/本地通知之间的区别可能会在应用商店留下差评。
  2. 提供标志来为给定用户打开/关闭此类功能始终是一个好习惯。
于 2014-09-02T09:01:16.207 回答