Поймать 22 согласно документации для использования адресной книги с iOS 6

Согласно документации с iOS6, адресная книга должна быть создана с использованием ABAddressBookCreateWithOptions.

Он также говорит, что если вызывающий абонент не имеет доступа к db, то этот метод возвращает null.

Однако доступ запрашивается путем вызова ABAddressBookRequestAccessWithCompletion, который принимает параметр ABAddressBookRef в качестве параметра.

Поэтому в соответствии с документацией вы не можете получить ABAddressBookRef в первую очередь, если у вас нет доступа, но для получения доступа вам необходимо передать ABAddressBookRef в качестве параметра.

Эх. Словить 22? Как вы затем создаете ABAddressBookRef?

Был для Google для примера пример / учебный код для этого, но не нашел.

ТИА

Я использую код следующим образом:

if (ABAddressBookCreateWithOptions) { _book = ABAddressBookCreateWithOptions(NULL, NULL); if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { ABAddressBookRequestAccessWithCompletion(_book, ^(bool granted, CFErrorRef error) { dispatch_async(dispatch_get_main_queue(), ^{ if (granted && !error) { ABAddressBookRevert(_book); } }); }); } } else { _book = ABAddressBookCreate(); } 

где _book – это мой ABAddressBookRef.

Если моему приложению отказано в доступе, то _book будет NULL, и вы не сможете получить доступ к адресной книге.

См. Мой ответ здесь:

https://stackoverflow.com/a/13671852/341994

ABAddressBookRequestAccessWithCompletion бесполезен и его следует игнорировать.

  • Если вам нужно знать статус авторизации, вызовите ABAddressBookGetAuthorizationStatus .

  • Если авторизация не определена (пользователь никогда не запускал это приложение), просто попытайтесь получить доступ к базе данных. Это приведет к появлению предупреждения авторизации.

  • Если пользователь разрешил или запретил доступ, ABAddressBookRequestAccessWithCompletion ничего не делает, поэтому нет смысла его звонить.

  • iOS 9 Facebook login simulator -canOpenURL: не удалось URL: «fbauth2: ///» - ошибка: «(null)»
  • Как отправить сообщение пользовательскому Google Cast Receiver из Chrome для iOS?
  • Ошибка UIImagePickerController push viewcontroller с allowEditing
  • Неопределенные символы с отладочными строками в Firebase / CrashReporting
  • Google Maps SDK для iOS отображает 3D-карты?
  • Запуск страницы Facebook из приложения iPhone с помощью QR-кода
  • Применение оттенков к изображению при применении цвета
  • Программа для разработчиков приложений iOS
  • Повторная аутентификация пользователей из аккаунтов Google / Facebook
  • Возможно ли получить время для маршрута с помощью SDK для Google Maps?
  • Не удается найти свое местоположение в Google Картах в iOS 8
  • Interesting Posts

    Блок отказа ответа AFNetworking вызывается вместо блока успеха

    Как добавить объект в первый индекс NSArray

    Приложение и расширение – использование основных данных == error: sharedApplication () 'недоступно

    Почему averagePowerForChannel всегда возвращает -160?

    UITextView: намного лучшая производительность после второй прокрутки

    Как заставить кнопку постоянно вызывать функцию при удержании (SpriteKit)

    Swift, как использовать перечисление для получения строкового значения

    Понимание UITableView dequeueReusableCellWithIdentifier – возвращает ячейку даже при первом вызове

    Безопасный dealloc объекта ObjC на устройстве iOS

    как запустить AVPlayer из фона?

    Неправильная анимация используется, несмотря на то, что preferredStatusBarUpdateAnimation вызывается

    Десятичное двойное преобразование в Swift 3

    Рекурсивные атрибуты CoreData

    Имя имени схемы URL отсутствует в предупреждении: Открыть эту страницу в разделе ""

    iOS UIButton в программном инстанцированном представлении не работает

    Давайте будем гением компьютера.