ABAddressBook ABSourceName

iPh*_*erd 6 objective-c abaddressbook ios

如何获取ABAddressBook要显示的源名称?(我知道枚举kABSourceTypeLocal,kABSourceTypeExchange...)

我不是指您使用的源类型名称ABRecordCopyValue(来源ABSourceNameProperty),而是Apple的Contacts-App中显示的真实姓名作为表格部分,例如:"Exchange Google"或"iCloud"

pas*_*aya 2

如果您查看ABSource Reference,您可以看到它们有一个名为 的属性kABSourceNameProperty,其中包含“源的名称”。以下是获取所有源名称的方法:

NSMutableArray *sourceNames = [[NSMutableArray alloc] init];
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sourcesArray = ABAddressBookCopyArrayOfAllSources(addressBook);

for (CFIndex i = 0; i < CFArrayGetCount(sourcesArray); i++) {
    ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(sourcesArray, i);
    CFStringRef sourceName = (CFStringRef)ABRecordCopyValue(ABRecordGetRecordID(source, kABSourceNameProperty);

    if(sourceName){
        [sourceNames addObject: (__bridge_transfer NSString *)sourceName];
    }
}

CFRelease(sourcesArray);
CFRelease(addressBook);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!