我正在使用 XCode 4.2 开发一个应用程序,并且尝试使用 initWithVCardRepresentation 和/或 ABPersonCreatePeopleInSourceWithVCardRepresentation 创建 ABPerson,但我找不到工作示例。有人可以帮忙吗?
我得到了 NSString 格式的 VCard...
谢谢
最佳答案
这是一个完整的示例,它运行完美,它基于最新的 iOS 8。
首先您应该检查授权状态并请求访问权限,如果没有,然后保存 vcard,让我们回顾一下下面的代码:
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized){
NSLog(@"Authorized");
[self addVcardsIntoAddressBook:vcard];
} else{
NSLog(@"Not determined");
ABAddressBookRequestAccessWithCompletion(ABAddressBookCreateWithOptions(NULL, nil), ^(bool granted, CFErrorRef error) {
if (!granted){
NSLog(@"Just denied");
return;
}
NSLog(@"Just authorized");
[self addVcardsIntoAddressBook:vcard];
});
}
这是添加电子名片的方法:
- (void)addVcardsIntoAddressBook:(NSData *)vcard {
CFDataRef vCardData = CFDataCreate(NULL, [vcard bytes], [vcard length]);
ABAddressBookRef book = ABAddressBookCreate();
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(book);
CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
ABAddressBookAddRecord(book, person, NULL);
CFRelease(person);
}
ABAddressBookSave(book, NULL);
}
关于iphone - 无法使用 VCard 表示创建人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8837828/