在iOS9 CloudKit/ABPerson中查找用户名或名/姓(ABAddressBook)

Kev*_*vin 7 abaddressbook abperson cloudkit ios9

iOS9不推荐使用CloudKitABPerson的用户信息功能.

例如,在CKDiscoveredUserInfo的属性中

firstName"在iOS 9.0中已弃用

lastName"在iOS 9.0中已弃用

我想要以前在iOS8 CloudKit中提供的姓氏和名字.

如何在iOS9 CloudKit,ABPerson或其他东西中检索类似的信息?

缺乏恩典方法就是这个

[[UIDevice currentDevice] name]; 

 NSArray *nameArray = [[NSHost currentHost] names];
 NSString *user = [nameArray objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

两者都打印出例如John'iPhone.

Edw*_*eer 3

CKDiscoverAllContactsOperation 的文档中,您可以看到:

\n\n
\n

对用户\xe2\x80\x99s 地址簿的搜索不会返回有关用户\xe2\x80\x99s 联系人的任何个人数据。搜索仅返回相应用户记录的 ID,其中仅包含您的应用放入其中的数据。CloudKit 使用地址簿信息来识别当前用户认识的应用程序的用户。由于系统访问的是通讯录而不是您的应用,因此当发生该访问时,系统不会向用户显示提示。

\n
\n\n

查看 CloudKit 仪表板时,您可以看到 User 表中也没有名称。所以你也可以不获取它。

\n\n

我认为苹果正在将这项服务设为匿名。你必须自己实现一些东西来将名称附加到 id 上。正如您所描述的,您可以使用设备名称,也可以让用户自己输入他的名字。

\n\n

我的第一个想法是通过首先使用ABAddressBookCopyArrayOfAllPeople查询所有联系人,然后使用每封电子邮件的CKDiscoverUserInfosOperation查找所有电子邮件 来实现此目的 。但显然这一功能在 iOS 9 中也被停产了。

\n\n

苹果似乎正在停止访问所有个人数据。当您转到预发布库并过滤地址时,您仍然会看到很多参考文献。但一旦你进入详细信息页面,你只会看到所有内容都已被弃用。

\n