簡體   English   中英

如何在iOS的通訊錄中獲取某人的家庭電話號碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM