iOS开发实战之app获取通讯录(iOS 9)
2016-03-02 19:14
731 查看
在做通讯类APP的时候,时常会访问到手机的通讯录,来获取联系人的各种属性,那么本文就来讨论一下怎么获取通讯录。
注意:iOS 9+版本上可以行,其他版本未试。
第一步:先导入系统库 《Contacts.framework》
然后在.h上导入头文件
第二步:直接在.m文件中写代码
我们注意到请求类后面的参数是一个Array,这个Array代表的意思就是你要请求的东西,比如名字,号码,地址,Email等等。参数有以下:
你写了哪些,请求对象就请求联系人的哪些属性,没写就不请求。。好了,选择你要的属性吧。
第三步:使用你取到的联系人。
注意第二步里的block中返回的参数CNContact * _Nonnull contact,contact就是你取出来的联系人对象,接下来就可以用起来了。注意的是联系号码属性是一个Array,因为有多个号码的可能性,所以用的时候注意一下。
注意:iOS 9+版本上可以行,其他版本未试。
第一步:先导入系统库 《Contacts.framework》
然后在.h上导入头文件
#import <Contacts/Contacts.h>
第二步:直接在.m文件中写代码
//通讯录存储的管理类 CNContactStore * stroe = [[CNContactStore alloc]init]; //取出联系人的请求类 CNContactFetchRequest * request = [[CNContactFetchRequest alloc]initWithKeysToFetch:@[CNContactPhoneNumbersKey,CNContactGivenNameKey,CNContactFamilyNameKey]]; //取出联系人的block执行,有多少联系人就执行多少次 [stroe enumerateContactsWithFetchRequest:request error:nil usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) { NSString * LinkName = [NSString stringWithFormat:@"%@%@",contact.familyName,contact.givenName]; NSArray * parr = contact.phoneNumbers; }];
我们注意到请求类后面的参数是一个Array,这个Array代表的意思就是你要请求的东西,比如名字,号码,地址,Email等等。参数有以下:
CONTACTS_EXTERN NSString * const CNContactPropertyNotFetchedExceptionName; // Properties that are always fetched. Can be used with key value coding and observing. CONTACTS_EXTERN NSString * const CNContactIdentifierKey NS_AVAILABLE(10_11, 9_0); // Optional properties that can be fetched. Can be used with key value coding and observing. CONTACTS_EXTERN NSString * const CNContactNamePrefixKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactGivenNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactMiddleNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactFamilyNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactPreviousFamilyNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactNameSuffixKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactNicknameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactPhoneticGivenNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactPhoneticMiddleNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactPhoneticFamilyNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactOrganizationNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactDepartmentNameKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactJobTitleKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactBirthdayKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactNonGregorianBirthdayKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactNoteKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactImageDataKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactThumbnailImageDataKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactImageDataAvailableKey NS_AVAILABLE(NA, 9_0); CONTACTS_EXTERN NSString * const CNContactTypeKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactPhoneNumbersKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactEmailAddressesKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactPostalAddressesKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactDatesKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactUrlAddressesKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactRelationsKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactSocialProfilesKey NS_AVAILABLE(10_11, 9_0); CONTACTS_EXTERN NSString * const CNContactInstantMessageAddressesKey NS_AVAILABLE(10_11, 9_0);
你写了哪些,请求对象就请求联系人的哪些属性,没写就不请求。。好了,选择你要的属性吧。
第三步:使用你取到的联系人。
注意第二步里的block中返回的参数CNContact * _Nonnull contact,contact就是你取出来的联系人对象,接下来就可以用起来了。注意的是联系号码属性是一个Array,因为有多个号码的可能性,所以用的时候注意一下。
相关文章推荐
- [iOS学习]Xcode插件的使用
- android包名
- CFSocket相关(未完待续)
- iOS文件读取方法 节选
- android SDK 下载以及更新
- android 多手指触控
- codeforces 632A A. Grandma Laura and Apples(暴力)
- 夺命雷公狗---微信开发31----微信群发消息4
- iOS陆先森开发随笔(三)iOS调试技巧(debug)
- Android Studio怎么关联supportV4的源码
- Android学习笔记----onSaveInstanceState()
- android的四种设计模式
- Android Fragment的学习笔记
- facebook 社会化分线 android部分
- Unity3D与android交互---构建android插件
- [异常] Android - Your project contains errors,please fix them before running your application
- Android内存泄漏分析及调试
- cocos2d移植到安卓引入第三方so文件时候编译会删除解决方式
- Android学习笔记----Activity的启动模式
- Swift 基础学习(数组)