我似乎无法收到显示的提示registerUserNotificationSettings
在 iOS 8.1 或 8.2 中。
这就是我正在做的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+ 更新:
自 iOS 11 起Resetting the Push Notifications Permissions Alert on iOS
手续似乎不再需要了。只需卸载/重新安装该应用程序即可。
使用您的代码,我在第一次应用程序启动时收到提示,并且仅在第一次启动时收到提示。但据我所知,这是 iOS 中的预期行为。
至少照片库、麦克风访问等是一样的:
权限提示行为
- 首次使用时弹出(或至少请求使用它)
- Apple 在设置中添加了一个条目(例如隐私,或在通知设置下)
首次使用
In the Settings
您可以配置的应用程序Notifications
对于每个应用程序
- 向下滚动,选择您的应用程序
- Select
Notifications
- 启用/禁用它们,或调整它们的行为
在 iOS 上重置推送通知权限警报
启用推送的应用程序第一次注册推送通知时,
iOS 询问用户是否希望接收该应用程序的通知。
用户响应此警报后,该警报就不会再次出现
除非设备已恢复或应用程序已卸载
至少一天。
如果您想模拟应用程序的首次运行,您可以离开
该应用程序已卸载一天。您可以实现后者,无需
实际上,按照以下步骤等待一天:
- 从设备中删除您的应用程序。
- 完全关闭设备并重新打开。
- 转到“设置”>“常规”>“日期和时间”,然后将日期提前一天设置
或者更多。
- 再次完全关闭设备并重新打开。
Source: https://developer.apple.com/library/ios/technotes/tn2265/_index.html https://developer.apple.com/library/ios/technotes/tn2265/_index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)