私の iOS アプリでは、ユーザーは ABPeoplePickerNavigationController を介して AddressBookUI からメールを選択できます。問題は、連絡先エントリの 1 つの電子メールがアドレス帳から送信され、別の電子メールが Facebook 同期から送信されることです。ユーザーが ABPeoplePickerNavigationController でこれらのメールの 1 つをタップすると、デリゲート メソッドが同じパラメーターで呼び出されます。ユーザーが選択した正しいメールを取得できません。私の場合、propertyID は 4 で ID は 0 です。
- (BOOL)personViewController:(ABPersonViewController *)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue {
ABMultiValueRef multiValue = ABRecordCopyValue(person, property);
CFIndex index = ABMultiValueGetIndexForIdentifier(multiValue, identifierForValue);
NSString *email = CFBridgingRelease(ABMultiValueCopyValueAtIndex(multiValue, index));
CFRelease(multiValue);
NSLog(@"Email: %@", email );
return NO;
}
各デリゲート メソッドの結果は同じです。同じ識別子を持っていると思われるFacebookのメールアドレスがある場合にのみ、この問題が発生します。複数の電子メールを持つ他のすべての連絡先では、デリゲート メソッドのパラメーターは正しいです。誰かがこの問題で私を助けてくれたらいいのにと思います。前もって感謝します。