Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 发现不一致性&;从iOS 10.3开始,DiscoveryUserIdentity为CKUserIdentity.lookupInfo返回nil_Swift_Cloudkit_Ios10.3 - Fatal编程技术网

Swift 发现不一致性&;从iOS 10.3开始,DiscoveryUserIdentity为CKUserIdentity.lookupInfo返回nil

Swift 发现不一致性&;从iOS 10.3开始,DiscoveryUserIdentity为CKUserIdentity.lookupInfo返回nil,swift,cloudkit,ios10.3,Swift,Cloudkit,Ios10.3,CKContainer.DiscoveralIdentity(completionHandler:),discoverUserIdentity(recordID:-完成处理程序返回CKUserIdentity,但是。即使联系人包含电子邮件、电话等,lookupInfo也始终为零。其他属性,如hasiCloudAccount、userRecordID、nameComponents都可以。这个问题刚开始出现在最近的Swift 3.1版本中。有人知道这是否是预期行为,因为我无法o在发行说明中找到对Cl

CKContainer.DiscoveralIdentity(completionHandler:),discoverUserIdentity(recordID:-完成处理程序返回CKUserIdentity,但是。即使联系人包含电子邮件、电话等,lookupInfo也始终为零。其他属性,如hasiCloudAccount、userRecordID、nameComponents都可以。这个问题刚开始出现在最近的Swift 3.1版本中。有人知道这是否是预期行为,因为我无法o在发行说明中找到对CloudKit更改的任何参考,但这看起来像是隐私问题

经过进一步调查,此问题可能是由于最近的iOS 10.3更新造成的。在10.2.1版本的iPhone 5上运行应用程序时,不会出现此问题,并且lookupInfo正确包含emailAddress

提交的苹果bug:31377433


新增:此外,如果我尝试通过ckdiscoveralluseridentiesoperation访问信息,特别是userIdentityDiscoveredBlock->user.nameComponents,则与12岁以下用户(可能在“家庭共享”计划中)关联的apple id的结果是“空字符串”。我找不到有关这方面的信息,苹果开发支持部门也没有提供任何帮助。

由于声誉不佳,我无法发表评论,所以我不得不这样做

我还提交了相同的bug(31397767),希望他们能修复它

对于
CKFetchShareParticipantsOperation
而言,必须具有
CKUserIdentityLookupInfo
。因为没有解决方法,我们需要等待他们修复它

我只是对这个bug感到好奇,因为如果你已经将你的应用提交到应用商店,那么整个共享部分对用户来说都不起作用

更新

iOS 10.3.1更新无法解决此问题

更新:解决方案

我收到了苹果关于这个“问题”的回复。以下是c&p的答案:

这是预期的行为,因为 CKDiscoverallUserIdentity操作不需要提示 用于联系人访问的用户。如果要将这些结果转换为 参与者您需要请求联系人访问并获得查找 您可以通过contactIdentifiers属性自己获取联系人信息

//通过CKDiscoverallUserIdentity操作发现的身份 与本地联系人数据库中的条目相对应。这些 身份将填写ContactIdentifier,您的应用程序可能会 用于获取有关所选联系人的其他信息 已发现。单个联系人可能存在多个联系人标识符 发现的用户,因为多个联系人可能包含同一封电子邮件 地址或电话号码

请注意,发现用户和查找参与者是两个方面 逻辑上不同的东西-您只能发现 可通过-[CKContainer]发现其自身 requestApplicationPermission:CKApplicationPermissionUserDiscoverability …],但您可以通过任何电子邮件地址或电话获得参与者 数字,即使它与iCloud帐户不对应。你没有 需要发现用户,然后将他们转化为参与者-您可以 只需让应用程序的用户输入参与者要添加的地址即可 分享


好的,这就是我在原版中所做的。在我的应用程序中,我会按如下方式提示访问。注意,这些都在10.3版本之前工作过,现在它不工作了,我无法从“lookupInfo”获取基本信息。想想看,如果除了名字和姓氏之外没有其他信息,那么lookupInfo有什么好处。下面是不再返回lookupInfo详细信息的工作流:fetchUserRecordID->checkDiscoverability->requestPermission->discoverUserIdentity