iOS ContactsUI Framework Разрешения
Я выбираю контакты, используя CNContactPickerViewController
и кажется, что iOS автоматически не запрашивает у меня разрешения на доступ.
Мне действительно нужны разрешения для использования CNContactPickerViewController
или мне нужно запрашивать разрешения вручную?
Если для этого мне понадобятся разрешения, будет ли отклонено мое приложение, если я отправлю это приложение в App Store и не запросил разрешения для контактов?
Примечание. В документации ContactsUI Framework ничего не указано.
4 ответа
Я предполагаю, что для использования ContactsUI API не нужны разрешения, так как в Contacts Framework Reference указано, что разрешения будут отображаться (только в первый раз) при вызовах CNContactStore
,
Пользователи могут предоставлять или отказывать в доступе к контактным данным для каждого отдельного приложения. Любой звонок в
CNContactStore
заблокирует приложение, пока пользователю предлагается предоставить или запретить доступ. Обратите внимание, что пользователю предлагается только первый раз, когда запрашивается доступ; любой последующийCNContactStore
звонки используют существующие разрешения.
Источник:
Разрешение не требуется при использовании CNContactPickerViewController
,
Документация для CNContactPickerViewController гласит:
Приложению, использующему представление выбора контактов, не требуется доступ к контактам пользователя, и пользователю не будет предложен доступ "предоставить разрешение". Приложение имеет доступ только к окончательному выбору пользователя.
Проверьте этот пример Apple. Короче говоря, вы должны проверить (переключатель) для ABAddressBookGetAuthorizationStatus()
и если значение kABAuthorizationStatusAuthorized
пользователь предоставил доступ к своим контактам. Если статус авторизации kABAuthorizationStatusNotDetermined
, вы даже можете запросить доступ к адресной книге, используя метод [CNContactStore requestAccessForEntityType:completionHandler:]
,
Когда используешь Contacts
& ContactsUI
фреймворки, вам необходимо проверить статус авторизации с помощью этого метода: CNContactStore.authorizationStatusForEntityType()
, И тогда вы проверяете для перечисления значение CNAuthorizationStatus
, ты хочешь .Authorized
,
Если статус .Denied
или же .NotDetermined
Вы можете запросить доступ к контактам методом requestAccessForEntityType()
, увидеть CNContactStore
класс для информации.