[英]How to get someone's home phone number in address book on iOS?
我正在嘗試在通訊錄中找到聯系人的家庭電話號碼。 為此,我將電話號碼的標簽與所有可能的標簽進行比較 :
const ABPropertyID kABPersonPhoneProperty;
const CFStringRef kABPersonPhoneMobileLabel;
const CFStringRef kABPersonPhoneIPhoneLabel;
const CFStringRef kABPersonPhoneMainLabel;
const CFStringRef kABPersonPhoneHomeFAXLabel;
const CFStringRef kABPersonPhoneWorkFAXLabel;
const CFStringRef kABPersonPhoneOtherFAXLabel;
const CFStringRef kABPersonPhonePagerLabel;
首先,這些常數的命名很奇怪-僅通過閱讀它們,我就無法確定哪個是非傳真家庭電話標簽。 好吧,我只需要測試所有這些,然后使用消除的過程即可。
NSString* phoneNumber = nil;
// record is an ABRecordRef
ABMultiValueRef phoneNumbers = ABRecordCopyValue(
record,
kABPersonPhoneProperty
);
if (ABMultiValueGetCount(phoneNumbers) > 0) {
CFStringRef phoneLabelRef = ABMultiValueCopyLabelAtIndex(phoneNumbers, 0);
NSString* phoneLabel = (__bridge_transfer NSString*)phoneLabelRef;
NSLog(@"phone label: %@", phoneLabel);
NSLog(@"phone is mobile: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneMobileLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is main: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneMainLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is iPhone: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneIPhoneLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is home fax: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneHomeFAXLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is work fax: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneWorkFAXLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is other fax: %d", CFStringCompare(phoneLabelRef, kABPersonPhoneOtherFAXLabel, 0) == kCFCompareEqualTo);
NSLog(@"phone is pager: %d", CFStringCompare(phoneLabelRef, kABPersonPhonePagerLabel, 0) == kCFCompareEqualTo);
}
這是Simulator中兩個預加載聯系人的打印輸出。 不用擔心,所有聯系信息都是偽造的。
phone label: _$!<Mobile>!$_
phone is mobile: 1
phone is main: 0
phone is iPhone: 0
phone is home fax: 0
phone is work fax: 0
phone is other fax: 0
phone is pager: 0
FIRST = Kate, LAST = Bell, PHONE = (555) 564-8583, EMAIL = kate-bell@mac.com
凱特·貝爾(Kate Bell)沒問題。 我可以檢測到她的手機在移動。 但是,安娜·哈羅(Anna Haro)有問題。 由於所有標簽都不匹配,因此我無法弄清楚她的電話號碼類型。
phone label: _$!<Home>!$_
phone is mobile: 0
phone is main: 0
phone is iPhone: 0
phone is home fax: 0
phone is work fax: 0
phone is other fax: 0
phone is pager: 0
FIRST = Anna, LAST = Haro, PHONE = 555-522-8243, EMAIL = anna-haro@mac.com
我不希望從字面上匹配字符串_%!<Home>!$_
因為確切的值可能會隨iOS的未來版本而變化。
您需要通用標簽kABHomeLabel
。 這是用於電話號碼,電子郵件和地址的“家庭”標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.