Как создать контакт в "локальной" адресной книге?
Я хочу создать контакт программно в "локальной" адресной книге (чтобы он не пытался синхронизироваться, что вызывает некоторые проблемы совместимости с Exchange).
Если локальная адресная книга уже существует, я могу найти ее, используя ABAddressBookCopyArrayOfAllSources, чтобы получить все источники в адресной книге, затем найдите ABRecordRef с sourceTypeRef, равным "kABSourceTypeLocal"- если я затем передам этот recordRef в ABPersonCreateInSource, я могу добавить запись в локальный каталог.
У кого-нибудь есть какие-либо предложения относительно того, как мне лучше всего создать запись в "локальной адресной книге", если там уже нет локальной адресной книги?
(также, как я мог сделать это до iOS4, так как вышеупомянутые звонки не были доступны тогда?)
Спасибо
Питер
2 ответа
Вы должны взглянуть на этот пост: Получение конкретного ABSource из ABAddressBook в iOS 4+
это демонстрирует, как идентифицировать и предназначаться для определенных источников (ABSource) в ABAddressBook. Хотя в этом коде упоминается функция ABGroupCreateInSource(), существует аналогичная функция ABPersonCreateInSource() для работы с людьми.
Я нашел простой обходной путь. Поскольку вы не можете видеть / добавлять локальные контакты, если у вас нет ранее существовавшего локального контакта, будет безопасно использовать следующий обходной путь:
- Давайте представим, что вы используете Gmail (Exchange)
- Перейдите в настройки почты для Gmail и отключите синхронизацию контактов.
- Когда появится запрос, хотите ли вы сохранить или удалить контакты Gmail со своего телефона, выберите УДАЛИТЬ их (не волнуйтесь, они не будут удалены из Gmail)
- Вернитесь к своим контактам. Теперь вы можете создать один локальный контакт
- Наконец, вернитесь в Настройки / Почта / Gmail и снова включите синхронизацию контактов.
- Вуаля, ваши контакты Gmail вернулись в ваш телефон, и теперь у вас есть 1 локальный контакт, который позволяет вам получить доступ к локальной группе контактов в дополнение к группе контактов Gmail.
Надеюсь, что это помогает (у меня была та же проблема, и я нашел этот обходной путь, который отлично работает для меня).
Бен.