在iOS中检索所有联系人电话号码

在iOS中检索所有联系人电话号码,第1张

概述到目前为止,我看到了如果我显示一个选择器来获取多个电话号码的方法,所以用户可以选择人,然后获取电话号码. 我想要的是检索所有联系人的号码. 甚至有可能吗 尝试这样做适用于iOS 6以及iOS 5.0或更早版本: Sample Project Demo 首先在链接二进制库中添加以下框架 > AddressBookUI.framework > AddressBook.framework 然后导入 #i 到目前为止,我看到了如果我显示一个选择器来获取多个电话号码的方法,所以用户可以选择人,然后获取电话号码.
我想要的是检索所有联系人的号码.
甚至有可能吗解决方法 尝试这样做适用于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中检索所有联系人电话号码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1109365.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存