Я разрабатываю приложение, которое подключается к другому iphone, используя bonjour. Одна из его особенностей - когда я подключаюсь к другому устройству, он автоматически проверяет, есть ли у меня номер телефона других лиц. Итак, моя проблема в том, как проверить свою адресную книгу на номер телефона, предоставленный другим устройством?Как найти адресную книгу iphone для определенного номера телефона?
10
A
ответ
18
Вот пример, извлеченный из одного из методов моей адресной книги. Я не искал по номеру телефона, но это дает вам представление о том, как должны двигаться вперед с тем, что вам нужно:
- (void) scanAddressBookSample
{
NSUInteger i;
NSUInteger k;
ABAddressBookRef addressBook = ABAddressBookCreate();
NSArray *people = (NSArray *) ABAddressBookCopyArrayOfAllPeople(addressBook);
if (people==nil)
{
NSLog(@"NO ADDRESS BOOK ENTRIES TO SCAN");
CFRelease(addressBook);
return;
}
for (i=0; i<[people count]; i++)
{
ABRecordRef person = (ABRecordRef)[people objectAtIndex:i];
//
// Phone Numbers
//
ABMutableMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex phoneNumberCount = ABMultiValueGetCount(phoneNumbers);
for (k=0; k<phoneNumberCount; k++)
{
CFStringRef phoneNumberLabel = ABMultiValueCopyLabelAtIndex(phoneNumbers, k);
CFStringRef phoneNumberValue = ABMultiValueCopyValueAtIndex(phoneNumbers, k);
CFStringRef phoneNumberLocalizedLabel = ABAddressBookCopyLocalizedLabel(phoneNumberLabel); // converts "_$!<Work>!$_" to "work" and "_$!<Mobile>!$_" to "mobile"
// Find the ones you want here
//
NSLog(@"-----PHONE ENTRY -> %@ : %@", phoneNumberLocalizedLabel, phoneNumberValue);
CFRelease(phoneNumberLocalizedLabel);
CFRelease(phoneNumberLabel);
CFRelease(phoneNumberValue);
}
}
[people release];
CFRelease(addressBook);
}
-1
использовать это. это мой код.
NSLog(@"=====Make People Array with Numbers. Start.");
peopleWithNumber = [[NSMutableDictionary alloc] init];
for (int i=0; i < [people count]; i++) {
NSInteger phoneCount = [self phoneCountAtIndex:i];
if (phoneCount != 0) {
NSMutableArray *phoneNumbers = [[NSMutableArray alloc] init];
for (int j=0 ; j < phoneCount ; j++) {
[phoneNumbers addObject:[self phoneNumberAtIndex:i phoneIndex:j]];
}
[peopleWithNumber addEntriesFromDictionary:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSArray arrayWithArray:phoneNumbers], [self fullNameAtIndex:i], nil]];
}
}
NSLog(@"=====Make People Array with Numbers. End.\n");
способ поиска. это будет быстрее, чем использование массива
«NSArray * people = (NSArray *) ABAddressBookCopyArrayOfAllPeople (адресная книга);"
- (NSArray *)searchNamesByNumber:(NSString *)number {
NSString *predicateString = [NSString stringWithFormat:@"%@[SELF] contains '%@'",@"%@",number];
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:predicateString,peopleWithNumber,number];
NSArray *names = [[peopleWithNumber allKeys] filteredArrayUsingPredicate:searchPredicate];
return names;
}
5
-(void)createQuickAccessContacts{
NSMutableDictionary contactDictionary= [[NSMutableDictionary alloc]init];
CFArrayRef all = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex n = ABAddressBookGetPersonCount(addressBook);
NSDate *date=[NSDate date];
for(int i = 0 ; i < n ; i++)
{
ABRecordRef ref = CFArrayGetValueAtIndex(all, i);
ABMultiValueRef phones = (ABMultiValueRef)ABRecordCopyValue(ref, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j);
NSString *phoneNumber = (__bridge NSString *)phoneNumberRef;
[contactDictionary setObject:(__bridge id)(ref) forKey:phoneNumber];
}
}
NSLog(@" Time taken %f for %i contacts",[[NSDate date] timeIntervalSinceDate:date],[contactDictionary count]);
}
Это занимает, как 0,5 сек для 2.5K контактов заполнить , то вы можете найти контакт, используя номер
ABRecordRef ref= [contactDictionary objectForKey:@"89xxxxxxx"];
его супер быстро принимает как 0.000x секунд
Смежные вопросы
- 1. Как найти адресную книгу с номером телефона?
- 2. введите адресную книгу телефона - обратный указатель
- 3. Поиск ABAddressBook для определенного номера телефона
- 4. Как открыть адресную книгу iPhone, используя Contacts.framework
- 5. Синхронизировать адресную книгу iPhone с серверным сервером
- 6. Где я могу найти адресную книгу iPhone с образцами данных?
- 7. вызывать iphone адресную книгу добавить контакт?
- 8. Добавить имя в адресную книгу iphone
- 9. Добавление новой информации в адресную книгу iPhone
- 10. Добавить небольшую адресную книгу в приложение iphone
- 11. Добавление контактного изображения в адресную книгу iPhone
- 12. Как искать адресную книгу iPhone для определенного имени пользователя на основе переменной, а не строки
- 13. Как проверить адресную книгу против моего приложения
- 14. Как правильно отображать адресную книгу iPhone в ландшафтном режиме?
- 15. Как добавить контакт в адресную книгу iPhone с веб-страницы?
- 16. Как добавить друзей facebook в адресную книгу iphone
- 17. Как отобразить iphone адресную книгу в индексированном представлении таблицы
- 18. Как добавить строку в адресную книгу в приложении iOS?
- 19. Формат номера телефона iPhone NSFormatter
- 20. Как добавить свойства адреса в адресную книгу?
- 21. Получить адресную книгу список всех телефонных ярлыков
- 22. Замените адресную книгу на Android
- 23. Добавление записи в адресную книгу
- 24. UITableView не отображает адресную книгу
- 25. Сравнить Facebook друзей в адресную книгу
- 26. Добавление контактов в адресную книгу (IPhone) с VCard
- 27. Как открыть адресную книгу Новый экран контактов
- 28. Как добавить номер телефона в контактную книгу?
- 29. Добавить контакт в адресную книгу iPhone iOS 10
- 30. Android: SeperatedList (Как получить адресную книгу эффект)
AlBeebe, К сожалению, на устройстве требуется гораздо больше времени (iPhone 4, 4.2). Я взял 15 секунд для адресной книги 3000) – Rabih 2011-02-25 12:39:15