0
我正在開發一個應用程序,其中我想從我的iPhone獲取所有聯繫人,包括詳細信息(名字,姓氏,電子郵件和手機號碼)。應用程序的部署目標是iOS 7及更高版本。獲取所有iphone在iOS中的聯繫人與iOS 7的應用程序
我曾嘗試下面的代碼,但它根本不工作。
我的代碼是在這裏
__block NSMutableArray *myContacts = [[NSMutableArray alloc]init];
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
__block BOOL userDidGrantAddressBookAccess;
CFErrorRef addressBookError = NULL;
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined ||
ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized)
{
addressBook = ABAddressBookCreateWithOptions(NULL, &addressBookError);
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error)
{
userDidGrantAddressBookAccess = granted;
dispatch_semaphore_signal(sema);
if (addressBook!=nil)
{
NSArray *allContacts = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSUInteger i = 0;
for (i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
[myContacts addObject:firstName];
}
CFRelease(addressBook);
}
else
{
NSLog(@"Error");
}
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
else
{
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusDenied ||
ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusRestricted)
{
NSLog(@"denied");
// Display an error.
}
}
NSLog(@"%@", myContacts);
請更新您獲取姓氏,電子郵件和圖片的代碼。 –
既然你看到我在做什麼,你能做到嗎? –
是的,我看過了,它的工作原理 –