registerUserNotificationSettings不显示提示iOS 8

我似乎无法得到提示在iOS 8.1或8.2中显示registerUserNotificationSettings

这里是我在做didFinishLaunchingWithOptions

  if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { #ifdef __IPHONE_8_0 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert |UIUserNotificationTypeSound | UIUserNotificationTypeBadge) categories:nil]; NSLog(@"Reg settings %@", settings); [application registerUserNotificationSettings:settings]; #endif } 

同样在这里得到正确的电话:

 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{ NSLog(@"Did register - %@", notificationSettings); } 

然而却没有提示。 更令人讨厌的是,当设备被locking时,警报将会显示,但是不会给出通知警报声。 任何想法在工作?

使用您的代码,我会在第一次启动应用程序时获得提示,并且只在第一次启动时才会提示。 但是afaik,这是iOS中的预期行为。 至less照片库,麦克风访问等是一样的:

权限提示行为

  1. 在第一次使用时popup(或者至less是使用它的请求)
  2. 苹果在设置中添加了一个条目(例如,隐私,或者只是在通知设置下)

第一次使用

权限promt

Settings应用程序中,您可以为每个应用程序configurationNotifications

  1. 向下滚动,select您的应用程序
  2. selectNotifications
  3. 启用/禁用它们,或者调整它们的行为

在iOS上重置推送通知权限警报

当推送应用程序第一次注册推送通知时,iOS会询问用户是否希望接收该应用程序的通知。 一旦用户对此警报作出响应,除非设备已恢复或应用程序已卸载至less一天,否则不会再次显示。

如果您想模拟首次运行您的应用,则可以将该应用卸载一天。 你可以通过以下步骤实现后者,而不需要等待一天:

  1. 从设备上删除您的应用程序。
  2. 完全closures设备并重新打开。
  3. 进入设置>常规>date和时间,并设置date提前一天或更多。
  4. 将设备再次完全closures,然后重新打开。

来源: https : //developer.apple.com/library/ios/technotes/tn2265/_index.html

更改构build目标的最新版本,你会看到popup消息。 我在iOS 8中遇到同样的问题,但是在iOS 10中显示警报popup消息,此警报消息在应用程序周期中仅显示一次。 除非你删除并重新安装新的。

 - (void)registerLocalNotification{ UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; [[UIApplication sharedApplication] registerForRemoteNotifications]; }