Поймать 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 Maps с определенным адресом в iOS 6?
  • iOS 8 TestFlight не устанавливает приложение
  • Создание открытой графической истории с помощью карты - iOS
  • window.opener не установлен в iOS Chrome
  • Не удалось найти спецификацию для «Firebase»
  • sprite kit touch userInteractionEnabled = true
  • Как получить выделенную версию UIFont prefferedFontForTextStyle?
  • iOS: периферийное устройство Bluetooth LE больше не обновляется после возвращения в диапазон
  • В IOS 6.0: UIBarButton в нижней панели инструментов исчезает после представления и отклонения контроллера модального представления
  • Почему системный вызов метода dealloc UIApplicationDelegate?
  • iOS, Как использовать GMSCoordinateBounds, чтобы показать все маркеры карты?
  • Interesting Posts

    Пользовательское обрезка изображения с использованием пути безье

    GKLocalPlayer loadRecentPlayersWithCompletionHandler возвращает пустой массив последних игроков в iOS 10 GM

    Рекомендации по безопасности приложений для iOS

    Отображение панели вкладок становится пустым при переключении обратно с активной панелью поиска.

    Как изменить приоритет ограничений во время выполнения

    Как я могу проверить с watchOS 2, если приложение на iPhone открыто или нет и сможет отправлять NSUserDefaults независимо от статуса приложения?

    Это устройство не подходит для запрошенной сборки

    Исходный ландшафт ios splitviewcontroller

    UISearchBar перемещается на 20 пикселей

    Отображать динамический текст на CVPixelBufferRef во время записи видео

    UILabel добавляет излишнюю верхнюю и нижнюю прокладку при вертикальном и разрыве линий

    Его просто невозможно добавить значок расширения действия

    Как сохранить определенный массив форматов в Core Data?

    Как написать Unit Test для функции запроса Alamofire?

    Список участников чата

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