繁体   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