问题描述
我找不到解决方案,对此感到震惊。我有此代码:
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions
completionHandler:^(BOOL granted,NSError * _Nullable error) {
NSLog(@"%i %@",granted,error);
}];
然后立即进入呼叫处理程序,而不显示通知权限
2020-09-18 18:05:46.657991-0700 My App [404:9600] 0 Error Domain=UNErrorDomain Code=1 "Notifications are not allowed for this application" UserInfo={NSLocalizedDescription=Notifications are not allowed for this application}
我想念什么?该警报甚至不会弹出。
注意:相同的代码在iOS 13.x上没有问题,在iOS 14上会立即失败。
解决方法
我的问题是在“产品名称”部分中使用土耳其语字符。
https://developer.apple.com/forums/thread/660648
,就我而言,“构建设置-包装-产品名称”不是英语。更改为英语并开始使用。
问题是您省略了一个步骤。在请求授权之前,请调用getNotificationSettingsWithCompletionHandler:
并查看结果对象的authorizationStatus
。如果它是UNAuthorizationStatusDenied,则没有任何意义。
我的产品名称是日语。如果产品名称不是英文,则会发生上述问题!如果我将产品名称更改为英语,则可以使用!我已经通过Apple反馈助手提出了一个问题。