私のコードでは、ABPeoplePickerNavigationControllerを使用して人を選択します。ユーザーが連絡先リストから人を選択した後、指定された人のレコードに電話番号があるかどうかを確認します。
- (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
ABMutableMultiValueRef phones;
phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
if (phones == nil || ABMultiValueGetCount(phones) == 0)
{
return NO;
}
// other code....
}
連絡先を作成し、それに電話番号を追加して、コードをテストしました。iOS 5では、このコードはうまく機能します。 phone変数には1つの電話番号が含まれます。
ただし、iOS 6では、連絡先をFacebookアカウントにリンクした後、phones変数に値が含まれていません。
Facebookアカウントとの連絡先のリンクを解除すると、すべてが再び正常に機能します。
この方法で人の電話番号を読み取るにはどうすればよいですか?
- (BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
UPD
上記の関数でYESを返すと、関数で
(BOOL) peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
私はすべての人の電話番号を通常の方法で読むことができます。では、なぜ最初の関数でそれらを読み取ることができないのですか?