9访问通讯录 ios_ios 访问通讯录 审核 - CSDN
  • iOS 访问手机通讯录

    2017-08-17 16:08:42
    iOS 9 只会出了 Contacts 框架 - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {  // 此代理方法写了  下面一个代理方法无效  // 调用通讯录界面  ...

    iOS 9 后出了 Contacts 框架

    - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact

    {

        // 此代理方法写了 下面一个代理方法无效

        // 调用通讯录界面 只能选一个联系人  点击联系人回调 不能进入联系人详情

        

    }

    - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty

    {

        // 调用通讯录界面 只能选一个联系人  点击联系人进入联系人详情界面 点击电话号码回调此方法

    }

    - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact*> *)contacts

    {

        // 此代理方法写了 上面两个代理方法无效

        // 调用通讯录界面 可选多个联系人  点击右上角确认 回调此方法 返回多个联系人信息

    }


    iOS 获取通讯录的4种方式详解

    参考文献:  http://blog.csdn.net/vbirdbest/article/details/52880944

    展开全文
  • iOS10出来以后 为了适配 项目整个动了很多 比如极光推送整个换了一遍 还有各种请求权限的修改和添加 简直日了狗了 不过辛亏网上大神多 一些基本的问题都有解答 但是通讯录是很坑的 因为iOS10 做了很大的改动 让我们...

        iOS10出来以后  为了适配  项目整个动了很多  比如极光推送整个换了一遍  还有各种请求权限的修改和添加  简直日了狗了  不过辛亏网上大神多  一些基本的问题都有解答  但是通讯录是很坑的  因为iOS10 做了很大的改动  让我们一起来看看有哪些坑

      1.权限问题  

      iOS10之后需要在info plist文件添加新的键值对 来保证我们能访问系统的功能  如果不添加的话直接会闪退掉 

      访问通讯录的话 我们需要添加Privacy - Contacts Usage Description  后面的值为字符串  即请求获取权限时显示的请求信息  比如我们项目中添加的是 我们需要使用您的通讯录   当然其他的  比如 相册  摄像头 话筒都一样  

      2.调取通讯录的方法 

     上网搜了很久  好像没有发现有人特别将iOS10之后修改了调取通讯录的方法  所以导致我一直以为调取通讯录奔溃是因为权限问题 

     不过还好找到  iOS9 以前一直调取的是  ABPeoplePickerNavigationController  iOS9以后改为CNContactPickerViewController

    并且废弃了 AddressBook  AddressBookUI框架  换为ContactsUI框架 所以当我们在iOS10  调用iOS9以下的方法时 不会显示请求权限信息 但是回调的时候会崩溃掉 


     自己写了个demo  放在github上https://github.com/DogWangWangWang/CH_GetContactInfor 如果有不明白的地方 欢迎大家下载 
     

      


      


    展开全文
  • iOS 9 通讯录崩溃问题

    2016-05-26 16:11:33
    最近在开发通讯录,新建联系人的时候,点击完成之后,页面会来回闪几下,然后崩溃掉。...原因:iOS 9 已经使用了最新的通讯录框架 Contact,ContactUI,需要在程序中判断一下,如果是iOS9的话,需要使用最新的框架

    最近在开发通讯录,新建联系人的时候,点击完成之后,页面会来回闪几下,然后崩溃掉。


    原因:iOS 9 已经使用了最新的通讯录框架 Contact,ContactUI,需要在程序中判断一下,如果是iOS9的话,需要使用最新的框架


    iOS 7,8,9 通讯录操作 

    http://blog.csdn.net/ruzhuxiaogu/article/details/51507863

    iOS 9 新框架Demo

    http://download.csdn.net/detail/ruzhuxiaogu/9532128

    展开全文
  • 找了半天iOS开发怎么调用系统的通讯录,全是AddressBook(iOS9之前用这个,可是现在写到程序里,全是警告)终于,功夫不负有心人,可算是找到了. // ①导入头文件 #import #import // ②遵守协议 ~~...

    找了半天iOS开发怎么调用系统的通讯录,全是AddressBook(iOS9之前用这个,可是现在写到程序里,全是警告)终于,功夫不负有心人,可算是找到了.


    // ①导入头文件

    #import <Contacts/Contacts.h>

    #import <ContactsUI/ContactsUI.h>

    // ②遵守协议

    ~~~~<CNContactPickerDelegate>

    // ③此方法为button点击事件

    - (void)pushContacts

    {

        // 1.创建选择联系人的控制器

        CNContactPickerViewController *contactVc = [[CNContactPickerViewController alloc] init];

        // 2.设置代理

        contactVc.delegate = self;

        // 3.弹出控制器

        [self presentViewController:contactVc animated:YES completion:nil];

    }

    // ④实现代理方法

    // 1.点击取消按钮调用的方法

    - (void)contactPickerDidCancel:(CNContactPickerViewController *)picker

    {

        DLog(@"取消选择联系人");

    }

    // 2.当选中某一个联系人时会执行该方法

    - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact

    {

        // 1.获取联系人的姓名

        NSString *lastname = contact.familyName;

        NSString *firstname = contact.givenName;

        DLog(@"%@ %@", lastname, firstname);

        

        // 2.获取联系人的电话号码(此处获取的是该联系人的第一个号码,也可以遍历所有的号码)

        NSArray *phoneNums = contact.phoneNumbers;

        CNLabeledValue *labeledValue = phoneNums[0];

        CNPhoneNumber *phoneNumer = labeledValue.value;

        NSString *phoneNumber = phoneNumer.stringValue;

        DLog(@"%@", phoneNumber);

    }


    展开全文
  • 引言:最近一个项目要求app能读取手机的通讯录。 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的。幸好ios6.0 以后给了个权限控制。当打开app的时候你可以选择拒绝。 实现方法: ...

    引言:最近一个项目要求app能读取手机的通讯录。

    其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的。幸好ios6.0 以后给了个权限控制。当打开app的时候你可以选择拒绝。


    实现方法:

    [plain] view plaincopy
    1. //读取所有联系人  
    2.   
    3. -(void)ReadAllPeoples  
    4.   
    5. {  
    6.       
    7.     //取得本地通信录名柄  
    8.       
    9.     ABAddressBookRef tmpAddressBook = nil;  
    10.       
    11.     if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) {  
    12.         tmpAddressBook=ABAddressBookCreateWithOptions(NULL, NULL);  
    13.         dispatch_semaphore_t sema=dispatch_semaphore_create(0);  
    14.         ABAddressBookRequestAccessWithCompletion(tmpAddressBook, ^(bool greanted, CFErrorRef error){  
    15.             dispatch_semaphore_signal(sema);  
    16.         });  
    17.       
    18.     dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);  
    19.     dispatch_release(sema);  
    20.     }  
    21.     else  
    22.     {  
    23.         tmpAddressBook =ABAddressBookCreate();  
    24.     }  
    25.     //取得本地所有联系人记录  
    26.       
    27.       
    28.     if (tmpAddressBook==nil) {  
    29.         return ;  
    30.     };  
    31.     NSArray* tmpPeoples = (NSArray*)ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);  
    32.       
    33.     for(id tmpPerson in tmpPeoples)  
    34.           
    35.     {  
    36.           
    37.         //获取的联系人单一属性:First name  
    38.           
    39.         NSString* tmpFirstName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonFirstNameProperty);  
    40.           
    41.         NSLog(@"First name:%@", tmpFirstName);  
    42.           
    43.         [tmpFirstName release];  
    44.           
    45.         //获取的联系人单一属性:Last name  
    46.           
    47.         NSString* tmpLastName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonLastNameProperty);  
    48.           
    49.         NSLog(@"Last name:%@", tmpLastName);  
    50.           
    51.         [tmpLastName release];  
    52.           
    53.         //获取的联系人单一属性:Nickname  
    54.           
    55.         NSString* tmpNickname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNicknameProperty);  
    56.           
    57.         NSLog(@"Nickname:%@", tmpNickname);  
    58.           
    59.         [tmpNickname release];  
    60.           
    61.         //获取的联系人单一属性:Company name  
    62.           
    63.         NSString* tmpCompanyname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonOrganizationProperty);  
    64.           
    65.         NSLog(@"Company name:%@", tmpCompanyname);  
    66.           
    67.         [tmpCompanyname release];  
    68.           
    69.         //获取的联系人单一属性:Job Title  
    70.           
    71.         NSString* tmpJobTitle= (NSString*)ABRecordCopyValue(tmpPerson, kABPersonJobTitleProperty);  
    72.           
    73.         NSLog(@"Job Title:%@", tmpJobTitle);  
    74.           
    75.         [tmpJobTitle release];  
    76.           
    77.         //获取的联系人单一属性:Department name  
    78.           
    79.         NSString* tmpDepartmentName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonDepartmentProperty);  
    80.           
    81.         NSLog(@"Department name:%@", tmpDepartmentName);  
    82.           
    83.         [tmpDepartmentName release];  
    84.           
    85.         //获取的联系人单一属性:Email(s)  
    86.           
    87.         ABMultiValueRef tmpEmails = ABRecordCopyValue(tmpPerson, kABPersonEmailProperty);  
    88.           
    89.         for(NSInteger j = 0; ABMultiValueGetCount(tmpEmails); j++)  
    90.               
    91.         {  
    92.               
    93.             NSString* tmpEmailIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpEmails, j);  
    94.               
    95.             NSLog(@"Emails%d:%@", j, tmpEmailIndex);  
    96.               
    97.             [tmpEmailIndex release];  
    98.               
    99.         }  
    100.           
    101.         CFRelease(tmpEmails);  
    102.           
    103.         //获取的联系人单一属性:Birthday  
    104.           
    105.         NSDate* tmpBirthday = (NSDate*)ABRecordCopyValue(tmpPerson, kABPersonBirthdayProperty);  
    106.           
    107.         NSLog(@"Birthday:%@", tmpBirthday);  
    108.           
    109.         [tmpBirthday release];  
    110.           
    111.         //获取的联系人单一属性:Note  
    112.           
    113.         NSString* tmpNote = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNoteProperty);  
    114.           
    115.         NSLog(@"Note:%@", tmpNote);  
    116.           
    117.         [tmpNote release];  
    118.           
    119.         //获取的联系人单一属性:Generic phone number  
    120.           
    121.         ABMultiValueRef tmpPhones = ABRecordCopyValue(tmpPerson, kABPersonPhoneProperty);  
    122.           
    123.         for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++)  
    124.               
    125.         {  
    126.               
    127.             NSString* tmpPhoneIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j);  
    128.               
    129.             NSLog(@"tmpPhoneIndex%d:%@", j, tmpPhoneIndex);  
    130.               
    131.             [tmpPhoneIndex release];  
    132.               
    133.         }  
    134.           
    135.         CFRelease(tmpPhones);  
    136.           
    137.     }  
    138.       
    139.     //释放内存   
    140.       
    141.     [tmpPeoples release];  
    142.       
    143.     CFRelease(tmpAddressBook);  
    144.       
    145. }  

    解释下代码:由于ios6.0系统的升级,对客户隐私有了一个较大的提示。
    以前
    [plain] view plaincopy
    1. tmpAddressBook =ABAddressBookCreate();这样就可以读取了,但是现在要做一个判断了。可以具体看看代码。  
    [plain] view plaincopy
    1. 把通讯录取出来放在一个array里面。这样你就可以对数组进行你的要求了。  
    [plain] view plaincopy
    1.   

    备注:

    苹果中文语言貌似有点问题。ios6.0  会提示你的app访问日历。。。。
    然后网上查了下资料。可以参照微信访问通讯录的形式,给客户一个提示
    他是在plist中  添加一项在XCode里显示的是Privacy - Contacts Usage Description。后面的string就是你要想提示的文字内容
    Privacy - Location Usage Description”。这个是定位位置提示。其他类似。

    备注二:

    分享一个测试经验,也是从网上看到的。
    一把苹果的app访问位置或者通讯录,第一次都会有一个提示让你选择。
    但是第二次及以后,即时删掉,也不会再出现了。
    如果想再次出现,可以  设置-通用-还原-还原位置与隐私
    这样你再次点击你的app就会再次出现了。
    展开全文
  • iOS9 访问通讯录

    2016-03-30 13:00:10
    iOS软件开发中难免有获取通讯录的联系人以及发短信给联系人的需求。在此简单的分享下 工具/原料 Mac OS X操作系统 Xcode编译器 方法/步骤 1 创建工程项目和视图控制器  1、...
  • iOS中,有2个框架可以访问用户的通讯录  AddressBookUI.framework  提供了联系人列表界面、联系人详情界面、添加联系人界面等  一般用于选择联系人    AddressBook.framework  纯C语言的A...
  • ios开发当中,获取用户本地的通讯录功能愈加频繁的出现,七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能(俗称“种子用户功能”,太可怕了)。对此七两总结了自己使用本地通讯录时的注意点,...
  • 在早些时候,当iOS 6还没出来,我们访问通讯录只要如下简单的代码: 不过在iOS 6上,这个API返回空值。苹果提供了如下API: // Call ABAddressBookCreateWithOptions to create an instance of ...
  • iOS 访问通讯录

    2020-05-19 15:04:19
    访问通讯录需要用户授权,开发人员需要在工程配置文件Info.plist中添加NSContactsUsageDescription键 1、使用Contacts框架读取联系人信息 Contacts框架中常用类 CNContactStore,封装访问通讯录的接口,可以查询、...
  • Swift iOS 9通讯录访问

    2015-11-28 13:23:48
    原创Blog,转载请注明出处 ... 前言:在iOS 9之前,一直使用AddressBook这个framework来访问用户通讯录。但是在iOS 9中,AddressBook被废弃了,转而使用Contacts Framework。 文档 Contacts Framework
  • 在ios开发中, 通讯录操作还是比较常见的, 尤其是在社交...1. 兼容iOS9以前的框架 #import 2.iOS9以后的新框架 #import  为了项目能兼容老版本, 本文主要整理AddressBook>的使用: 一. 判断通讯录权限 /
  • iOS 6中,以前工作正常的访问通讯录的iPhone程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在“设置->隐私->通讯录”中看不到你的程序。另外,对通讯录进行操作的代码会报类似于以下...
  • 读取通信录中的联系人一般的过程是先查找联系人记录,然后再访问记录的属性,属性又可以分为单值属性和多值属性。通过下面例子介绍联系人的查询,...访问通讯录的应用必须要做的两件事情: 1、添加AddressBook和A
  • iOS -- 访问通讯录

    2015-01-09 11:49:15
    在程序第一次需要访问通讯录的时候,必须先询问系统是否允许当前程序访问通讯录,等待作答。iOS7以后,如果不写询问,可能崩溃。。 询问方法:参数 granted==YES,表示允许使用, granted==NO,表示不允许使用  ...
  • 转自:https://blog.csdn.net/vbirdbest/article/details/52880944使用场景一些App通过手机号码来推荐好友,如 微博、支付宝首先客户端会获取通讯录中的所有手机号然后将这些手机号提交到App服务器中,服务器会查找每...
  • ios6 ios7 访问和使用系统通讯录 导入AddressBook和AddressBookUI框架 iOS 6之前,可以通过如下方法获得通讯录  ABAddressBookRef addressBook = ABAddressBookCreate(); 不过在iOS 6之后,这个方法被...
  •  //这个变量用于记录授权是否成功,即用户是否允许我们访问通讯录  int __block tip=0;  //声明一个通讯簿的引用  ABAddressBookRef addBook =nil;  //创建通讯簿的引用  addBook=ABA
  • iOS开发:通讯录获取

    2016-09-05 14:31:31
    #import "ViewController.h" #import #import @interface ViewController () @property (nonatomic, strong) ABPeoplePickerNavigationController * peoplePicker; @property (nonatomic, strong) UILabel * nam
1 2 3 4 5 ... 20
收藏数 4,968
精华内容 1,987
关键字:

9访问通讯录 ios