
我想要的是检索所有联系人的号码.
甚至有可能吗解决方法 尝试这样做适用于iOS 6以及iOS 5.0或更早版本:
Sample Project Demo
首先在链接二进制库中添加以下框架
> AddressBookUI.framework
> AddressBook.framework
然后导入
#import <AddressBook/ABAddressBook.h>#import <AddressBookUI/AddressBookUI.h>
然后使用以下代码
请求访问通讯录的权限
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NulL,NulL);__block BOol accessGranted = NO;if (&ABAddressBookRequestAccessWithCompletion != NulL) { // We are on iOS 6 dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(addressBook,^(bool granted,CFErrorRef error) { accessGranted = granted; dispatch_semaphore_signal(semaphore); }); dispatch_semaphore_wait(semaphore,disPATCH_TIME_FOREVER); dispatch_release(semaphore);}else { // We are on iOS 5 or older accessGranted = YES; [self getContactsWithAddressBook:addressBook];}if (accessGranted) { [self getContactsWithAddressBook:addressBook];} 从通讯录中检索联系人
// Get the contacts.- (voID)getContactsWithAddressBook:(ABAddressBookRef )addressBook { contactList = [[NSMutableArray alloc] init]; CFArrayRef allPeople = ABAddressBookcopyArrayOfAllPeople(addressBook); CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); for (int i=0;i < nPeople;i++) { NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary]; ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i); //For username and surname ABMultiValueRef phones =(__brIDge ABMultiValueRef)((__brIDge Nsstring*)ABRecordcopyValue(ref,kABPersonPhoneProperty)); CFStringRef firstname,lastname; firstname = ABRecordcopyValue(ref,kABPersonFirstnameProperty); lastname = ABRecordcopyValue(ref,kABPersonLastnameProperty); [dOfPerson setobject:[Nsstring stringWithFormat:@"%@ %@",firstname,lastname] forKey:@"name"]; //For Email IDs ABMutableMultiValueRef eMail = ABRecordcopyValue(ref,kABPersonEmailProperty); if(ABMultiValueGetCount(eMail) > 0) { [dOfPerson setobject:(__brIDge Nsstring *)ABMultiValuecopyValueAtIndex(eMail,0) forKey:@"email"]; } //For Phone number Nsstring* mobileLabel; for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++) { mobileLabel = (__brIDge Nsstring*)ABMultiValuecopyLabelAtIndex(phones,j); if([mobileLabel isEqualToString:(Nsstring *)kABPersonPhoneMobileLabel]) { [dOfPerson setobject:(__brIDge Nsstring*)ABMultiValuecopyValueAtIndex(phones,j) forKey:@"phone"]; } else if ([mobileLabel isEqualToString:(Nsstring*)kABPersonPhoneIPhoneLabel]) { [dOfPerson setobject:(__brIDge Nsstring*)ABMultiValuecopyValueAtIndex(phones,j) forKey:@"phone"]; break ; } } [contactList addobject:dOfPerson]; }NSLog(@"Contacts = %@",contactList);} 取回其他信息
// All Personal information PropertIEskABPersonFirstnameProperty; // First name - kABStringPropertyTypekABPersonLastnameProperty; // Last name - kABStringPropertyTypekABPersonMIDdlenameProperty; // MIDdle name - kABStringPropertyTypekABPersonPrefixProperty; // Prefix ("Sir" "Duke" "General") - kABStringPropertyTypekABPersonSuffixProperty; // Suffix ("Jr." "Sr." "III") - kABStringPropertyTypekABPersonNicknameProperty; // Nickname - kABStringPropertyTypekABPersonFirstnamePhoneticProperty; // First name Phonetic - kABStringPropertyTypekABPersonLastnamePhoneticProperty; // Last name Phonetic - kABStringPropertyTypekABPersonMIDdlenamePhoneticProperty; // MIDdle name Phonetic - kABStringPropertyTypekABPersonorganizationProperty; // Company name - kABStringPropertyTypekABPersonJobTitleProperty; // Job Title - kABStringPropertyTypekABPersonDepartmentProperty; // Department name - kABStringPropertyTypekABPersonEmailProperty; // Email(s) - kABMultiStringPropertyTypekABPersonBirthdayProperty; // Birthday associated with this person - kABDateTimePropertyTypekABPersonNoteProperty; // Note - kABStringPropertyTypekABPersonCreationDateProperty; // Creation Date (when first saved)kABPersonModificationDateProperty; // Last saved date// All Address information PropertIEskABPersonAddressproperty; // Street address - kABMultIDictionaryPropertyTypekABPersonAddressstreetKey;kABPersonAddressCityKey;kABPersonAddressstateKey;kABPersonAddressZIPKey;kABPersonAddressCountryKey;kABPersonAddressCountryCodeKey; Further Reference Read Apple Docs
更新:
您需要添加关于为什么需要访问您的Apps-Info.pList中的联系人的说明
隐私 – 联系人使用说明
要么
<key>NSContactsUsageDescription</key><string>Write the reason why your app needs the contact.</string>
获取用户图像.
UIImage *contactimage;if(ABPersonHasImageData(ref)){ contactimage = [UIImage imageWithData:(__brIDge NSData *)ABPersoncopyImageData(ref)];} 注意:
AddressBook框架在iOS 9中已被弃用,并被新的和改进的Contacts Framework替代
总结以上是内存溢出为你收集整理的在iOS中检索所有联系人电话号码全部内容,希望文章能够帮你解决在iOS中检索所有联系人电话号码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)