ABPersonViewController без доступа к адресной книге

Я реализую приложение, в котором пользователь должен иметь возможность импортировать контакт из адресной книги или предоставить контакт самостоятельно. Я реализовал все с помощью https://github.com/soffes/sspersonviewcontroller. Новые контакты добавляются в адресную книгу, и все работает очень хорошо. У меня были все поля и возможности редактирования с помощью ABPersonViewController и т. Д.

НО теперь клиент настаивает на том, чтобы контакт НЕ сохранялся в адресной книге, а в приложении, и что пользователя НИКОГДА не следует просить предоставить доступ к адресной книге, за исключением импорта.

Я получил «импорт контакта в приложение», работающий с использованием сериализатора для ABRecordRef (из https://github.com/nvrooij/Let-s-Share/blob/master/Classes/ABRecordSerializer.h)

Но моя самая большая проблема в том, что ABNewPersonViewController и ABPersonViewController настаивают на том, чтобы запросить у пользователя доступ к адресной книге.

Итак, что мне нужно:

  • Представление для создания контакта без доступа к адресной книге. Он должен вернуть ABRecordRef человеку, чтобы я мог его где-то сериализовать (я сохраняю его в NSUserDefaults)

  • Представление для редактирования контакта без доступа к адресной книге.

Что я уже пробовал: Следуя как Чтобы использовать ABPersonViewController без подключения к AddressBook, я установил displayPerson, но всплывающее окно «предоставить доступ» все еще отображается.

Из документов ABNewPersonViewController и ABPersonViewController у меня сложилось впечатление, что создание подкласса и переопределение получателя для адресной книги для возврата nil во всех случаях будет работать, и я закончу с представлением, у которого нет адресной книги. Но где-то там (я предполагаю, что само представление) адресная книга создается снова, и я не могу избавиться от этого вызова.

Как вы можете помочь?

Любые указатели на повторную реализацию ABPersonViewController (включая возможности редактирования) или любые другие подсказки приветствуются.

Также приветствуются любые идеи о том, как создать пользовательский контроллер просмотра со всеми приятными вещами (выбор страны, добавление полей и т. Д.).

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

Я бы хотел, чтобы контроллеры для создания и редактирования контактов были полностью отделены от адресной книги и возвращали ABRecordRef вместо доступа к адресной книге. В моем случае это сильно упростило бы мою задачу (мужчина может мечтать).

Всего наилучшего, iosGoblin


person iosGoblin    schedule 08.03.2013    source источник


Ответы (1)


Я решил / обошел проблему следующим образом: я отказался от возможностей редактирования и создал контроллер представления, который похож на ABNewPersonViewController (только некоторые конкретные поля, такие как имя, имя, номер телефона, адрес). Из входных данных я создал ABRecordRef (полезный код на http://www.modelmetrics.com/tomgersic/iphone-programming-adding-a-contact-to-the-iphone-address-book/). Я сериализую этот контакт в NSUserDefaults с помощью ABRecordSerializer (ссылка в моем вопросе)

Если пользователь импортирует контакт, я просто сериализую контакт, который я возвращаю из ABPeoplePickerNavigationController в NSUserDefaults.

Если контакт хранится в NSUserDefaults, я десериализую и отображаю его.

Резюме:

  • Я повторно реализовал сокращенную версию ABNewPersonViewController
  • Я использую сериализатор (ссылка выше) для хранения контакта в NSUserDefaults (либо из моего контроллера представления, либо из импортированного, после того, как он сериализован, меня больше не волнует)
  • Я желаю контакт и показываю его

Всего наилучшего, iosGoblin

person iosGoblin    schedule 10.03.2013