Ios kABPerson Property |想知道通讯录联系人是否也在使用iPhone?
我正在尝试开发一个应用程序,用户可以通过Ios kABPerson Property |想知道通讯录联系人是否也在使用iPhone?,ios,properties,addressbook,Ios,Properties,Addressbook,我正在尝试开发一个应用程序,用户可以通过iMessage发送消息。因此,我可以从通讯录导入联系人列表,并通过MessageUI框架发送消息,但我想知道导入的联系人中有哪些也有iPhone,以便他们可以使用iMessage功能。有没有办法从kABPerson…属性中找到答案 这是我的代码: ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); if (ABAddressBookGetAu
iMessage
发送消息。因此,我可以从通讯录
导入联系人列表,并通过MessageUI框架
发送消息,但我想知道导入的联系人中有哪些也有iPhone,以便他们可以使用iMessage
功能。有没有办法从kABPerson
…属性中找到答案
这是我的代码:
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
ABAddressBookRef addressBook = ABAddressBookCreate( );
});
}
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
CFErrorRef *error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex numberOfPeople = ABAddressBookGetPersonCount(addressBook);
for(int i = 0; i < numberOfPeople; i++) {
ABRecordRef person = CFArrayGetValueAtIndex( allPeople, i );
NSString *firstName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonFirstNameProperty));
NSString *lastName = (__bridge NSString *)(ABRecordCopyValue(person, kABPersonLastNameProperty));
//Something like this ?
BOOL *doeshaveiPhone = (__bridge BOOL *)(ABRecordCopyValue(person, kABPersonPhoneIPhoneLabel));
NSLog(@"Name:%@ Surname: %@", firstName, lastName);
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
CFStringRef locLabel = ABMultiValueCopyLabelAtIndex(phones, j);
NSString *phoneLabel =(__bridge NSString*) ABAddressBookCopyLocalizedLabel(locLabel);
NSString *phoneNumber = (__bridge NSString *)phoneNumberRef;
CFRelease(phoneNumberRef);
CFRelease(locLabel);
NSLog(@" - %@ (%@)", phoneNumber, phoneLabel);
}
}
ABAddressBookRef addressBookRef=ABAddressBookCreateWithOptions(NULL,NULL);
if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined){
ABAddressBookRequestAccessWithCompletion(addressBookRef,^(已授予bool,CFErrorRef错误){
ABAddressBookRef addressBook=ABAddressBookCreate();
});
}
else if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusAuthorized){
CFErrorRef*错误=NULL;
ABAddressBookRef addressBook=ABAddressBookCreateWithOptions(空,错误);
CFArrayRef allPeople=abAddressBookCopyArrayFallPeople(addressBook);
CFIndex numberOfPeople=ABAddressBookGetPersonCount(地址簿);
for(int i=0;i
您的代码是确定通讯簿中的人是否有iMessage的最佳方法。但是,也有一个缺点:只有当用户正确设置他们的联系人时,它才起作用。通常情况下,字段设置不正确,这会使开发应用程序变得困难
这个问题以前有人问过,最高投票的答案是
您的启发式可能还可以,但它正确地依赖于用户
设置该属性
取决于上下文,它可能足够好/或不够
知道
没有真正的方法来检测哪个用户真正使用ios(没有API)