CloudKit错误:无法获取PCS对象来解包字段encryptedPublicSharingKey的加密数据

CloudKit错误:无法获取PCS对象来解包字段encryptedPublicSharingKey的加密数据,第1张

概述在iOS 10中,我的应用程序的CloudKit功能不再起作用.完全相同的应用程序在iOS 9上工作正常.我尝试在XCode 8中构建它仍然无法正常工作. 不起作用的代码及其生成的错误如下所示.我们所做的是从公共云数据库中获取记录.我已经确认该设备上有一个新的iCloud帐户.同样的设备与iOS 9下的应用程序完美配合.我尝试重启设备并登录和退出iCloud,但仍然得到相同的错误. 请指教… CK 在iOS 10中,我的应用程序的CloudKit功能不再起作用.完全相同的应用程序在iOS 9上工作正常.我尝试在XCode 8中构建它仍然无法正常工作.

不起作用的代码及其生成的错误如下所示.我们所做的是从公共云数据库中获取记录.我已经确认该设备上有一个新的iCloud帐户.同样的设备与iOS 9下的应用程序完美配合.我尝试重启设备并登录和退出iCloud,但仍然得到相同的错误.

请指教…

CKDatabase *publicdatabase = [[CKContainer defaultContainer] publiccloudDatabase];CKRecordID *myRecordID = [[CKRecordID alloc] initWithRecordname:@"myRecord"];[publicdatabase fetchRecorDWithID:myRecordID completionHandler:^(CKRecord * _Nullable record,NSError * _Nullable error) {    if(error != nil) {        CLS_LOG(@"<ERROR> Error fetching record. Error: %@",error);        return;    }    //rest of code}];

结果是:

Error: <ckerror 0x15e7c2b0: "Internal Error" (1/5001); "Couldn't get aPCS object to unwrap encrypted data for fIEldencryptedPublicSharingKey: (null)">
解决方法 更新(找到解决方案):

我的原始答案中没有一点是正确的.真正的罪魁祸首是我有一个从我的服务器到服务器脚本创建的记录,其中“createShortGUID”(我从here复制)设置为true.不知道为什么会这样.但只要我清除所有服务器创建的记录,并将我的脚本更改为:

var Json = {    operations: [{        operationType: 'forceUpdate',record: {            recordtype : "heartBeat",//createShortGUID: true,// Comment this away!!!!            recordname : "heartBeatRecordname",fIElds: {                dummyFIEld: { value: "dummyValue" },},}],};

并再次重新填充我的服务器记录,然后iOS应用程序再次开始工作.
createShortGUID对应于CloudKit仪表板中记录右上角的复选框:

原始答案(错误的猜测):

尝试这些,其中一个为我解决了问题. (但我不知道哪一个.)

>等一下.我创建容器后花了大约3个小时.
>尝试切换到生产容器.在权利文件中添加密钥“com.apple.developer.icloud-container-environment”和值“Production”(区分大小写).您需要在密钥和值中都准确无误才能构建.查看更多https://developer.apple.com/library/content/technotes/tn2415/_index.html
>尝试从该设备中创建记录.我使用Server-to-Server脚本在公共数据库中创建记录.在我从该设备中添加了一条记录后,iOS似乎已经“固定”了一些内部信息.

我的整个经历……

> 3小时前创建了一个全新的容器.可以获取服务器到服务器脚本将记录泵入公共数据库.现在我需要从客户端iOS应用程序中读取记录.
>如果我查询(唯一的记录类型)记录,即使使用普通的TRUE谓词,我得到< ckerror 0x174247470:“内部错误”(1/1000); “遇到错误提取记录”>
>谷歌搜索了一下.没运气.
>如果我获取记录(使用我的服务器到服务器脚本创建的记录的recordID,通过CloudKit仪表板检索),我得到< ckerror 0x174253590:“内部错误”(1/5001); “无法获取PCS对象来解包字段encryptedPublicSharingKey的加密数据:( null)”>
>谷歌搜索了一下.没运气.
>意识到这可能是设备上的问题,因为设备日志说:
>
>默认00:09:03.190715 0800 cloudd [ *** 作0x1018916d0] *** 作正在回调队列上完成,但出现错误

>
>默认值00:09:03.190989 0800 cloudd [ *** 作0x1018916d0]由于本地错误, *** 作正在流量控制

>尝试在设备上启用/禁用iCloud / iCloud Keychain.没有帮助.>试图切换到生产容器,似乎没有帮助. (我忘记了我是否通过在权利中使用“APS环境”键错误地做错了,这是针对APN而不是针对CloudKit)>尝试从设备内创建记录,写入是可以的.>尝试再次切换到生产容器(这次可能使用正确的密钥)>从那时起,一切都很有效.

总结

以上是内存溢出为你收集整理的CloudKit错误:无法获取PCS对象来解包字段encryptedPublicSharingKey的加密数据全部内容,希望文章能够帮你解决CloudKit错误:无法获取PCS对象来解包字段encryptedPublicSharingKey的加密数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存