Xcode 14 RC启动报错:无推送通知权限,需添加aps-connection-initiate授权
Xcode 14 RC下CloudKit推送权限报错的解决方案
这确实是Xcode 14 Release Candidate版本的已知兼容性问题,不少开发者反馈在使用NSPersistentCloudKitContainer开启远程变更通知时遇到该权限报错,切换回Xcode 13.x版本则恢复正常。
报错信息
[CK] BUG IN CLIENT OF CLOUDKIT: Not entitled to listen to push notifications. Please add the 'aps-connection-initiate' entitlement.
触发报错的代码片段
lazy var persistentContainer: NSPersistentCloudKitContainer = { /* The persistent container for the application. This implementation creates and returns a container, having loaded the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail. */ let container = NSPersistentCloudKitContainer(name: "not_real_name") guard let description = container.persistentStoreDescriptions.first else { fatalError("No descriptions found (AppDelegate.persistentContainer)") } description.setOption(true as NSObject, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey) container.loadPersistentStores(completionHandler: { (storeDescription, error) in if let error = error as NSError? {
可行解决办法
手动添加
aps-connection-initiate权限
直接在项目的*.entitlements文件中添加以下键值对:<key>aps-connection-initiate</key> <true/>也可以通过Xcode项目设置操作:进入Targets -> Signing & Capabilities,点击
+ Capability添加Push Notifications后,手动在entitlements文件补全该权限键。临时禁用远程变更通知(测试用)
如果暂时不需要CloudKit远程变更同步功能,可以注释掉触发权限检查的代码:// description.setOption(true as NSObject, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey)这样能绕过权限校验,让应用正常启动,等Xcode 14正式版发布后再恢复该功能。
重置Xcode签名缓存
除了清理派生数据,还可以彻底重置配置文件缓存:- 关闭Xcode
- 删除
~/Library/MobileDevice/Provisioning Profiles目录下的所有文件 - 重新打开Xcode,等待它自动重新下载配置文件
内容的提问来源于stack exchange,提问作者andrewlewisdev
相关产品推荐
相关产品推荐

