Xamarin.iOS开发使用CloudKit获取用户Record ID不唯一问题咨询
结论
你的代码实现没有语法错误,观察到的ID重复属于CloudKit的正常特性,不属于实现问题。
原因说明
- CloudKit返回的用户Record ID的
RecordName仅在当前应用对应的CloudKit容器范围内具备唯一性,不具备跨容器、跨开发者账号的全局唯一性:- 同一Apple ID在不同开发者的CloudKit容器下会生成完全独立的Record ID,不同容器下出现字符串完全相同的Record ID属于正常情况,二者没有关联
- 同一Apple ID在同一开发者的不同CloudKit容器下生成的Record ID也不相同
- 你看到的其他账号存在相同格式ID的情况,本质是其他开发者的应用独立生成的自有容器内的用户标识,不会对你的应用内用户识别逻辑造成干扰,只要你在自有容器范围内使用该ID,完全可以唯一区分你的应用的不同用户。
补充建议
如果你的业务需要跨应用、跨服务的全局唯一Apple用户标识,建议改用「通过Apple登录」(Sign in with Apple)服务获取的用户ID,该ID具备跨应用的全局唯一性。
你使用的示例代码本身逻辑正确,可正常获取当前用户在当前CloudKit容器内的唯一标识:
var defaultContainer = CKContainer.DefaultContainer; var userRecordId = await defaultContainer.FetchUserRecordIdAsync(); return userRecordId.RecordName;
内容的提问来源于stack exchange,提问作者Il'ya Grishkevich
相关产品推荐
相关产品推荐

