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