Pla*_*sma 11 xcode objective-c ios cncontact cncontactstore
我有一个应用程序一直与CNContacts框架完美兼容,直到IOS12。我目前正在使用IOS 13 beta对其进行测试,并且它完全坏了。我已经检查了联系人权限,并删除了该应用程序并重新允许了该权限。这是我用来检索所有联系人的代码:
NSError* error;
CNContactStore *store = [[CNContactStore alloc]init];
[store containersMatchingPredicate:[CNContainer predicateForContainersWithIdentifiers: @[store.defaultContainerIdentifier]] error:&error];
NSArray *keysToFetch =@[CNContactGivenNameKey, CNContactEmailAddressesKey, CNContactNoteKey];
CNContactFetchRequest *request = [[CNContactFetchRequest alloc]initWithKeysToFetch:keysToFetch];
BOOL success = [store enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact * __nonnull contact, BOOL * __nonnull stop){
NSLog(@"Contact Found: %@", contact.givenName);
}];
Run Code Online (Sandbox Code Playgroud)
联系人存储建立良好,错误为零。但是,当我随后尝试通过获取请求获取联系人时,我获得成功=否,并且收到以下错误:
Error Domain=CNErrorDomain Code=102 "(null)" UserInfo={CNKeyPaths=(
note
), CNInvalidRecords=(
"<CNContactFetchRequest: 0x60000189aa00: predicate=(null), keysToFetch=(\n givenName,\n emailAddresses,\n note\n), unifyResults=1, sortOrder=0>"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种调整,但是根本无法使用。我也找不到任何文档说明此行为已更改。
是否有其他人也尝试过此方法或找到了解决方法?
Pet*_*esh 14
在iOS 13中,苹果添加了新的权利,如果您希望访问联系人的注释,则需要该权利。的权利是com.apple.developer.contacts.notes。您可以请求将权限用于在App Store中放置的应用程序。
添加它的原因主要是出于隐私方面的考虑-备注字段可以包含您可能在联系人中拥有的任何信息;在很多情况下,此信息比联系信息更加敏感。
截至2019年8月15日,此权利位于beta类别中,这意味着它可能会在iOS 13发行之前进行更改,并且该权利的名称可能会稳定在以Xcode呈现给开发人员的位置。
对我来说,这似乎与“要获取的键”中CNContactNoteKey的存在有关。删除它可以恢复功能。
我看到您也有CNContactNoteKey。
我已将此标记为Apple的错误。
| 归档时间: |
|
| 查看次数: |
1177 次 |
| 最近记录: |