В помощь мобильному разработчику
Устройства iOS 10

Новые настройки разрешений в iOS 10

Александр Алексеев

Если Вы когда-либо разрабатывали приложения под iOS, то Вам, должно быть, известно, что такое запросы разрешений, так же как и разработчики, работающие с Android, знакомы с этим начиная с версии Marshmallow. Если приложению требуется получить доступ к местоположению пользователей или ему необходимо воспользоваться системой push-уведомлений в iOS 10, то оно попросит пользователя предоставить на это разрешение.

В iOS 10 Apple произвела изменения в том, как осуществляется контроль за большинством разрешений, потребовав, чтобы разработчики заранее заявляли доступ к личным данным пользователя в файле Info.plist. В этом посте Вы узнаете, как добиться того, чтобы существующие Xamarin-приложения продолжали работать без сбоев с новой политикой разрешений в iOS 10.

 

Пример запроса разрешений в iOS 9

К примеру, если нам нужно интегрировать в приложение фотографии, то  мы можем запросить на это разрешение, введя следующий код:

 

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

 

Что поменялось в iOS 10?

Начиная с iOS 10 почти все API-интерфейсы, которые требуют запрашивания авторизации, а также другие API, например, как те, что отвечают за открытие камеры или фотогалереи, требуют описания использования новой пары ключ-значение в файле Info.plist. Это очень похоже на требование внесения строчек кода — NSLocationWhenInUseUsageDescription или NSLocationAlwaysUsageDescription в файл Info.plit, когда задействуются Geolocation и IBeacon API. Единственная разница здесь заключается в том, что приложение будет вылетать, если пытается провести авторизацию за отсутствием установленных ключей, которые используют следующие компоненты:

  • Bluetooth Sharing
  • Calendar
  • CallKit/VoIP
  • Camera
  • Contacts
  • Health
  • HomeKit
  • Location
  • Media Library
  • Microphone
  • Motion
  • Photos
  • Reminders
  • Speech Recognition
  • SiriKit
  • TV Provider

Эти новые атрибуты начинают действовать, только когда мы осуществляем компиляцию на уровне iOS 10 SDK, это значит, что мы должны вносить определённые ключи, когда используем эти API-интерфейсы. К примеру, если хотим использовать Медиаплагин для Xamarin и Windows, чтобы отснять кадр или просмотреть фотографии, то должны добавить следующие настройки приватности в текущий файл Info.plist:

properties

Когда приложение попытается выбрать фотографию, вот такое сообщение увидят пользователи:

popup

 

Каждый из этих закрытых ключей устанавливает соответствие с конкретными значениями, прописанными в Info.plist. Открыв этот файл в текстовом редакторе, мы увидим следующее:

 

Вот отображение каждого из значений на тот случай, если Вам придётся вручную вносить их в Info.plist:

  • Bluetooth Sharing – NSBluetoothPeripheralUsageDescription
  • Calendar – NSCalendarsUsageDescription
  • CallKit – NSVoIPUsageDescription
  • Camera – NSCameraUsageDescription
  • Contacts – NSContactsUsageDescription
  • Health – NSHealthShareUsageDescription & NSHealthUpdateUsageDescription
  • HomeKit – NSHomeKitUsageDescription
  • Location – NSLocationUsageDescription, NSLocationAlwaysUsageDescription, NSLocationWhenInUseUsageDescription
  • Media Library – NSAppleMusicUsageDescription
  • Microphone – NSMicrophoneUsageDescription
  • Motion – NSMotionUsageDescription
  • Photos – NSPhotoLibraryUsageDescription
  • Reminders – NSRemindersUsageDescription
  • Speech Recognition – NSSpeechRecognitionUsageDescription
  • SiriKit – NSSiriUsageDescription
  • TV Provider – NSVideoSubscriberAccountUsageDescription

 

Узнайте больше

Чтобы лучше разобраться в этих ключах, обязательно ознакомьтесь с документацией Cocoa Keys от Apple. Чтобы узнать больше о новых API-интерфейсах и изменениях iOS 10, не забудьте прочитать гайд Введение в iOS 10, а также новую документацию Расширенные функциональные возможности безопасности и приватности iOS 10.

 

Автор: James Montemagno
ИсточникОфициальный блог Xamarin

Александр Алексеев
Александр Алексеев

Xamarin - разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#. За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

xamarin forms

Написать ответ