我希望我的网络应用程序允许从iCloud联系人导入用户联系人(特别是地址)。
类似于Google People API为Google通讯录提供的内容。
方案是,用户使用桌面浏览器访问我的网站并导入其所有联系人。
因此,用户不应该浪费时间键入所有联系人,以便能够在网站上使用它们。
我正在尝试使用CloudKit JS来解决这个问题。
看起来.discoverAllUserIdentities就是我需要的东西:
获取用户/发现:获取当前用户的地址簿中的所有用户身份,如发现所有用户身份(GET用户/发现)中所述
但是,我得到了空集:
{"users":[]}
似乎Web应用程序没有获取联系人的权限。如果是这样,如何申请权限?
或者我可能是完全错误的方式,如果问题可以解决,请指出正确的方向。
答案 0 :(得分:3)
由于您没有构建本机Web应用程序,因此无法请求访问用户iCloud联系人。如果允许网站访问用户数据,这将是一场安全噩梦。像ShuttleCloud这样的工具提供了用于迁移用户联系人的API。这就是Google用于自己的Gmail服务。
所以不,你不能通过浏览器请求直接访问联系人,但有一些工具可以使导入更容易。
您需要向iOS请求许可。您可以通过查看Apple的documentation。
来完成此操作#import <AddressBookUI/AddressBookUI.h>
// Request authorization to Address Book
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
if (granted) {
// First time access has been granted, add the contact
[self _addContactToAddressBook];
} else {
// User denied access
// Display an alert telling user the contact could not be added
}
});
}
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
// The user has previously given access, add the contact
[self _addContactToAddressBook];
}
else {
// The user has previously denied access
// Send an alert telling user to change privacy setting in settings app
}
答案 1 :(得分:1)
来自苹果的文件:
<强>讨论强>
使用此方法检索有关该应用的其他用户的信息。此方法返回有关满足以下条件的用户的信息: