在2014年查找所有者的电话号码?

时间:2014-04-25 10:49:34

标签: ios addressbook phone-number

我一直在研究如何查找iOS设备的所有者电话号码,但没有运气。有一些帖子显示允许这样做的第三方框架,但被Apple拒绝。

在我的应用中,我可以通过姓名和电话访问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);

            }

        }

2 个答案:

答案 0 :(得分:0)

无法从任何Apple公共API访问电话号码,这意味着您无法获取电话号码。

如果您正在实施拨号器应用程序,我无法看到您将拥有自己的电话号码。这不像你打算给自己打电话?

您可以从NSUserDefault

获取用户的电话号码

这适用于越狱设备。如果您希望将应用程序上传到AppStore,则不应使用这些代码。

[[NSUserDefaults standardUserDefaults] objectForKey:@"SBFormattedPhoneNumber"]

但这只有在用户输入了他的电话号码时才有效。 官方SDK中无法从SIM卡中读取任何内容。

答案 1 :(得分:-1)

你可以做的最好的事情就是在这个库中完成,试一试: ABGetMe

您可以切换为使用私有API-s或nit与ABGETME_ENABLE_PRIVATE_APIS预处理器宏。

相关问题