我似乎无法在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);
}
但是没有显示任何提示。更令人讨厌的是,当设备被锁定时会显示警报,但不会发出通知警报声。关于解决方案的任何想法?
因为iOS 11 Resetting the Push Notifications Permissions Alert on iOS
程序似乎不再需要了。只需取消/重新安装应用程序。
使用您的代码,我会在第一次启动应用程序时收到提示,并且仅在首次启动时显示。但afaik,这是iOS中的预期行为。至少它对于照片库,麦克风访问等是相同的:
Settings
App you can configure Notifications
for each appNotifications
第一次启用推送的应用程序注册推送通知时,iOS会询问用户是否希望接收该应用程序的通知。一旦用户响应此警报,除非设备已恢复或应用程序已卸载至少一天,否则不会再次显示该警报。
如果您想模拟首次运行的应用,可以将应用程序卸载一天。您可以通过以下步骤实现后者而无需等待一天:
- 从设备中删除您的应用。
- 完全关闭设备并重新打开。
- 转到设置>常规>日期和时间,并将日期设置为一天或更长时间。
- 再次完全关闭设备并重新打开。
资料来源:https://developer.apple.com/library/ios/technotes/tn2265/_index.html
更改构建目标最新版本,您将看到弹出消息。在iOS 8中我没有显示相同的问题,但在iOS 10中显示警报弹出消息,此警报消息将仅显示一次应用程序周期。除非您删除并重新安装新的。
- (void)registerLocalNotification{
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
如果有人仍然被卡住,切换为我工作的选项。就是这个
UNAuthorizationOptions options = UNAuthorizationOptionAlert & UNAuthorizationOptionSound;
我把它改成了这个
UNAuthorizationOptions options = UNAuthorizationOptionAlert;
并回到
UNAuthorizationOptions options = UNAuthorizationOptionAlert & UNAuthorizationOptionSound;