我一直在研究如何找到iOS設備的所有者電話號碼,但沒有運氣。有篇文章都顯示允許這樣做的第三方框架,但被Apple拒絕。在2014年找到店主的電話號碼?
在我的應用程序中,我正在訪問AddressBook聯繫人並獲取所有與姓名和電話聯繫的電話聯繫人。在我的情況下(用我的iPhone,我沒有在其他iPhone上測試),我可以看到我自己的號碼與其他聯繫人列出。有沒有辦法找出/標記或識別聯繫人作爲iPhone的所有者?
這裏我的代碼:
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));
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);
}
}
Apple高度保護設備所有者的隱私,尤其是來自開發人員。爲什麼你需要在沒有業主許可的情況下獲取這樣的私人信息?總是懷疑...... – holex
@holex我想要擁有者的許可。我想問問店主,因爲我正在訪問聯繫人列表。有什麼辦法嗎? –
@PauSenabre,如果你想獲得所有者的許可,然後通過輸入字段在你的應用中直接詢問他們的電話號碼...你不認爲這是適當的解決方案嗎? – holex