CloudKit共享 - 由于userId无效,无法将userId转换为dsId
问题描述:
我正在尝试使用Apple CloudKit的新数据共享功能。我可以成功发送共享链接到其他设备。当我打开它,我得到共享元数据(一些哈希值会被截断):CloudKit共享 - 由于userId无效,无法将userId转换为dsId
<
CKShareMetadata: 0x170110b30;
shareID=<
CKRecordID: 0x170234020;
recordName=com.mentalfaculty.ensembles.zone.schema2,
zoneID=com.mentalfaculty.ensembles.zone.schema2:_c96e4c45c173bb2215138...
>,
participantType=PrivateUser,
Owner=<
CKUserIdentity: 0x1700b8720;
lookupInfo=<
CKUserIdentityLookupInfo: 0x170664900;
[email protected]
>,
cached=0,
nameComponents=MyName,
userID=<
CKRecordID: 0x170229ac0;
recordName=_c96e4c45c173bb2215138...,
zoneID=_defaultZone:__defaultOwner__
>
>,
participantStatus=Pending,
container=iCloud.com.company.app:Sandbox,
rootRecordID=<
CKRecordID: 0x17403a380;
recordName=CDEFileSystemNode_/,
zoneID=com.mentalfaculty.ensembles.zone.schema2:_c96e4c45c173bb2215138...
>,
participantPermission=ReadWrite,
shareURL=https://www.icloud.com/share/...
>
然而,当我尝试接受的份额,我得到这个错误:
<
CKError 0x170440120: "Partial Failure" (2/1011);
"Failed to accept some shares";
uuid = 1C3D8534-BE22-42D2-9EDD-...;
container ID = "iCloud.com.company.app.ios.debug";
partial errors: {
https://www.icloud.com/share/... = <
CKError 0x17025f6b0: "Invalid Arguments" (12/2006);
server message = "Cannot convert userId to dsId due to an invalid userId. The userId cannot be used for this container and/or environment."
>
}
>
我注意到,数据筒在元数据中与错误消息中的containerID不同。元数据中的containerID是“真实”的,而containerID在错误消息中只是应用程序包标识符。 我的问题:
- containerIDs是不是很正常?
- 这个错误怎么解决?
我可以根据需要提供更多信息。
注意:我正在使用Ensembles框架将数据保存到云中。
P.S.我已经多次观看了WWDC 2016会议226,查看了Ensembles示例,当然还有Google搜索了好几个小时。没有成功。
答
正如我怀疑,问题是与containerID
。在iCloud设置(Xcode-> Project Settings-> Target-> Capabilities-iCloud)中更改containerID
,以便它与捆绑包标识符相同,并开始工作。我不知道这是否是共享接受方法使用与元数据对象中提供的containerID
(该方法仅使用包标识符)不同的错误。