ios通讯录访问权限怎么开,iphone访问通讯录权限在哪里

  ios通讯录访问权限怎么开,iphone访问通讯录权限在哪里

  在iOS 6中,以前工作正常的访问通讯录的苹果手机程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在"设置-隐私-通讯录"中看不到你的程序。另外,对通讯录进行操作的代码会报类似于以下消息的错误:

  无法编译查询语句(abcopyarrayofallinstancesofclassinsourcematchingproperties):

  SELECT ROWID,Name,ExternalIdentifier,Type,ConstraintsPath,ExternalModificationTag,ExternalSyncTag,AccountID,Enabled,SyncData,MeIdentifier,ABStore中的启用的功能=?

  其原因是iOS 6加强了通讯录访问控制,要求开发人员显式声明需要访问通讯录,方法是调用

  ABAddressBookRequestAccessWithCompletion

  方法,具体参见官方文档:

  http://开发者。苹果。com/library/IOs/#发行说明/General/RN-IOs SDK-6 _ 0/index。超文本标记语言

  下面是对应的样例代码,一般来讲需要将这段代码放置在程序启动部分,在程序启动过程中提示用户本程序需要访问设备上的通讯录:

  ABAddressBookRef通讯录=ABAddressBookCreate();

  _ _ block BOOL accessGranted=NO

  if(ABAddressBookRequestAccessWithCompletion!=NULL) {

  //我们在iOS 6上

  NSLog(@ iOS 6或更高版本,尝试授予访问权限));

  dispatch _ semaple _ t sema=dispatch _ semaple _ create(0);

  abaddressbookrequestaccesswithcompletion(地址book,^(bool已授予,CFErrorRef错误){

  accessGranted=授予

  调度信号(sema);

  dispatch_semaphore_wait(sema,DISPATCH _ TIME _ ever);

  dispatch _ release(sema);

  else { //我们使用的是iOS 5或更早版本

  NSLog(@ 在iOS 5以上,是可以的);

  accessGranted=是

  if (accessGranted) {

  NSLog(@ 我们获得了访问权限);

ios通讯录访问权限怎么开,iphone访问通讯录权限在哪里