iOS ContactsUI Framework Разрешения

Я выбираю контакты, используя CNContactPickerViewControllerи кажется, что iOS автоматически не запрашивает у меня разрешения на доступ.

Мне действительно нужны разрешения для использования CNContactPickerViewController или мне нужно запрашивать разрешения вручную?

Если для этого мне понадобятся разрешения, будет ли отклонено мое приложение, если я отправлю это приложение в App Store и не запросил разрешения для контактов?

Примечание. В документации ContactsUI Framework ничего не указано.

4 ответа

Решение

Я предполагаю, что для использования ContactsUI API не нужны разрешения, так как в Contacts Framework Reference указано, что разрешения будут отображаться (только в первый раз) при вызовах CNContactStore,

Пользователи могут предоставлять или отказывать в доступе к контактным данным для каждого отдельного приложения. Любой звонок в CNContactStore заблокирует приложение, пока пользователю предлагается предоставить или запретить доступ. Обратите внимание, что пользователю предлагается только первый раз, когда запрашивается доступ; любой последующий CNContactStore звонки используют существующие разрешения.

Источник:

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

Разрешение не требуется при использовании CNContactPickerViewController,

Документация для CNContactPickerViewController гласит:

Приложению, использующему представление выбора контактов, не требуется доступ к контактам пользователя, и пользователю не будет предложен доступ "предоставить разрешение". Приложение имеет доступ только к окончательному выбору пользователя.

Проверьте этот пример Apple. Короче говоря, вы должны проверить (переключатель) для ABAddressBookGetAuthorizationStatus()и если значение kABAuthorizationStatusAuthorized пользователь предоставил доступ к своим контактам. Если статус авторизации kABAuthorizationStatusNotDetermined, вы даже можете запросить доступ к адресной книге, используя метод [CNContactStore requestAccessForEntityType:completionHandler:],

Когда используешь Contacts & ContactsUI фреймворки, вам необходимо проверить статус авторизации с помощью этого метода: CNContactStore.authorizationStatusForEntityType(), И тогда вы проверяете для перечисления значение CNAuthorizationStatus, ты хочешь .Authorized,

Если статус .Denied или же .NotDetermined Вы можете запросить доступ к контактам методом requestAccessForEntityType(), увидеть CNContactStore класс для информации.

Другие вопросы по тегам