ABRecordCopyValue только возвращает электронную почту Facebook для контактов и игнорирует других

Я пытаюсь сравнить электронные письма выбранного телефонного контакта с электронными письмами зарегистрированных пользователей в моем приложении, чтобы узнать, зарегистрированы ли они.

Это должно быть достаточно просто. Получите recordRef, скопируйте адрес электронной почты multiValue, затем сравните:

-(void) checkForUser:(ABRecordRef) person {

    ABMultiValueRef contactEmails = ABRecordCopyValue(person, kABPersonEmailProperty);
    NSLog(@"emails are %@", contactEmails); // seeing error in log

    ...
    // check the emails against registered users. 

Это прекрасно работает большую часть времени. Проблема приходит с унифицированными контактами. Мой контакт, например, представляет собой единую запись с моим Facebook, домом, рабочими письмами в одном контакте. Когда я бегу checkUser: с этим ABRecordRef он показывает только мою электронную почту Facebook, хотя есть еще 4.

Я думаю, что это ошибка. Я что-то упустил из-за унифицированных карт?

1 ответ

Это то, что я сделал, вы можете увидеть, если ваш код похож - если нет, больше информации, чтобы предоставить вам:

ABMutableMultiValueRef multiValue = ABRecordCopyValue(person, kABPersonEmailProperty);
//CFShow(multiValue);
if(multiValue) {
    for(CFIndex j=0; j<ABMultiValueGetCount(multiValue); ++j) {
        //CFShow(ABMultiValueCopyLabelAtIndex(multiValue, j) );
        CFStringRef label = ABMultiValueCopyLabelAtIndex(multiValue, j);
        if(![emailKey isEqualToString:(__bridge NSString *)label]) {
            CFRelease(label);
            continue;
        }
        CFRelease(label);

        CFStringRef string = ABMultiValueCopyValueAtIndex(multiValue, j);
        NSString *finalStr = CFBridgingRelease(string);

        NSArray *array = [finalStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
        if([array count] == 3)  finalStr = (NSString *)[array objectAtIndex:1];

        [data replaceObjectAtIndex:emailAddress withObject:finalStr];
        break;
    }
    CFRelease(multiValue);
}
Другие вопросы по тегам