热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

IOS13CNContacts不再能够检索所有联系人

如何解决《IOS13CNContacts不再能够检索所有联系人》经验,为你挑选了2个好方法。

我有一个应用程序一直与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);

}];

联系人存储建立良好,错误为零。但是,当我随后尝试通过获取请求获取联系人时,我获得成功=否,并且收到以下错误:

Error Domain=CNErrorDomain Code=102 "(null)" UserInfo={CNKeyPaths=(
    note
), CNInvalidRecords=(
    ""

我已经尝试了各种调整,但是根本无法使用。我也找不到任何文档说明此行为已更改。

是否有其他人也尝试过此方法或找到了解决方法?



1> Petesh..:

在iOS 13中,苹果添加了新的权利,如果您希望访问联系人的注释,则需要该权利。的权利是com.apple.developer.contacts.notes。您可以请求将权限用于在App Store中放置的应用程序。

添加它的原因主要是出于隐私方面的考虑-备注字段可以包含您可能在联系人中拥有的任何信息;在很多情况下,此信息比联系信息更加敏感。

截至2019年8月15日,此权利位于beta类别中,这意味着它可能会在iOS 13发行之前进行更改,并且该权利的名称可能会稳定在以Xcode呈现给开发人员的位置。


不,我从Apple没听到任何消息,并且在网站上的配置UI或XCode中都看不到。这似乎是一个“丢球”问题-我建议提出一个与此有关的问题。
我提出了一个开发人员问题,答复是申请使用配置文件的权限,我希望如果获得批准,它将出现在应用程序的配置文件中,否则将无法使用。在此期间,我只是想获取notes字段,因为用例不需要它

2> Peter Johnso..:

对我来说,这似乎与“要获取的键”中CNContactNoteKey的存在有关。删除它可以恢复功能。

我看到您也有CNContactNoteKey。

我已将此标记为Apple的错误。


事实证明它不是错误,请参阅上面@Petesh的评论以及此处的链接.. https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_contacts_notes?language=objc
推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
  • iOS 设备唯一标识获取的高效解决方案与实践
    在iOS 7中,苹果公司再次禁止了对MAC地址的访问,使得开发者无法直接获取设备的物理地址。为了在开发过程中实现设备的唯一标识,苹果推荐使用Keychain服务来存储和管理唯一的标识符。此外,还可以结合其他技术手段,如UUID和广告标识符(IDFA),以确保设备的唯一性和安全性。这些方法不仅能够满足应用的需求,还能保护用户的隐私。 ... [详细]
  • 在使用Block时,正确的声明方法和确保线程安全是至关重要的。为了保证Block在堆中分配,应使用`copy`修饰符进行声明,因为栈中的Block与栈的生命周期绑定,容易导致内存问题。此外,还需注意Block捕获外部变量的行为,以避免潜在的循环引用和数据不一致问题。建议深入研究相关文档,以掌握更多高级技巧和最佳实践。 ... [详细]
  • iOS开发中MVC架构模式的深入解析(第一部分)
    在iOS开发中,MVC架构模式是常用的设计模式之一。本文将深入解析MVC架构的第一部分,重点介绍View组件。View组件继承自UIView,主要负责内容的展示(如UILabel等视图类)和用户输入的处理(如UIButton等控件类)。通过详细的代码示例和实际应用,帮助开发者更好地理解和掌握View在MVC架构中的作用和实现方式。 ... [详细]
  • 本文提供了针对iOS设备在Xcode 8.0及以上版本中的调试指南,详细介绍了从环境配置到常见问题解决的全流程。内容涵盖设备连接、证书配置、日志查看及性能监控等多个方面,适用于2015年后的开发环境。通过本指南,开发者可以高效地进行应用调试,提升开发效率。 ... [详细]
  • mac用于开发使用时间长硬盘会越来越小,速度越来越慢的,亦是花了几分钟研究怎么清理系统的缓存,方法:1,到https:www.omnigroup.commore安装OmniDisk ... [详细]
  • iOS入门:http:www.jonathanhui.comiosObjC语法:http:www.jonathanhui.comobjective-ch ... [详细]
  • 导读:本文来自SwiftGG翻译组,作者@walkingway基于苹果Swift官方博客中TedKremenek所撰写的“Swift2.2Released!”文章进行了关于Swift2. ... [详细]
  • 项目地址:github.comDanie1sDNS…DNSPageViewDNSPageView一个纯Swift的轻量级、灵活且易于使用的pageView框架 ... [详细]
  • IhaveaPickerViewandIwanttoinitializeitwithintegervalues.ForexamplePickerViewwithall ... [详细]
  • IamhavinganissuewithmyXcodeproject.我的Xcode项目有一个问题。Ihavetheselines:我有这些线:typedefstr ... [详细]
  • c语言自定义BOOL函数C语言没有BOOL类型变量boolean类型是C++所独有的由于使用BOOL类型可以使代码更具有可读性,很多编程者都在C中自己定义了类似的应用,一般方法有两 ... [详细]
  • 1.切换Xcode版本假如本地有2个Xcode,切换命令如下sudoxcode-select--switchUsersyushu.lxysoftwareXcode.appConte ... [详细]
author-avatar
83984246_42dbe6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有