Работа с назначениями в Xamarin.iOS
Разрешения (entitlements) предоставляют особые возможности и функции безопасности корректно настроенным для их использования приложениям.
В операционной системе iOS приложения выполняются в песочнице, которая устанавливает ряд правил, ограничивающих доступ приложения к определенным ресурсам системы или пользовательским данным. Назначения используются для запроса разрешения у системы на расширение песочницы и предоставление приложению дополнительных возможностей.
Для расширения возможностей вашего приложения необходимо сделать назначение в файле Entitlements.plist вашего приложения. Могут быть расширены только некоторые возможности, их список приведен в руководстве Работа с возможностями, а их описание приведено ниже. Назначения передаются в систему как пара ключ/значение, и обычно достаточно одной пары для каждой возможности. Конкретные ключи и значения описаны в разделе Справочник по ключам назначений этого руководства. Visual Studio для Mac и Visual Studio предоставляют понятный интерфейс для добавления назначений для приложения Xamarin.iOS в редакторе файлов Entitlements.plist. Это руководство описывает работу в редакторе файлов Entitlements.plist. В руководстве вы также найдете справочник всех назначений, которые можно добавить в проект iOS для каждой возможности.
Назначения и подготовка
Файл Entitlements.plist применяется для указания назначений и для подписывания пакета приложения.
Однако требуется дополнительная подготовка, чтобы убедиться в корректности подписанного кода. Используемый профиль подготовки должен содержать ИД приложения, в котором включена требуемая возможность. Сведения о том, как это сделать, см. в руководстве Работа с возможностями.
Внимание
Файл Entitlements.plist помогает указать правильные свойства приложения с использованием возможностей. Но он не обеспечивает создание профиля подготовки, так как не связан с учетной записью разработчика Apple. Для создания профиля подготовки, для развертывания и распространения приложения вам все еще нужно будет воспользоваться порталом разработчика.
Установка назначений в проекте Xamarin.iOS
В дополнение к выбору и настройке необходимых служб приложения при определении ИД приложения необходимо также в проекте Xamarin.iOS настроить назначения, отредактировав файлы Info.plist и Entitlements.plist.
Для настройки назначений Visual Studio для Mac выполните следующее:
На Панели решения дважды щелкните файл Info.plist, чтобы открыть его.
В разделе Удостоверение введите имя приложения и идентификатор пакета, который был создан при определении идентификатора приложения:
Сохраните изменения в файле Info.plist.
На Панели решения дважды щелкните файл Entitlements.plist, чтобы открыть его для редактирования:
Выберите и настройте назначения для приложения Xamarin.iOS таким образом, чтобы соответствовать настройкам созданного ранее ИД приложения.
Сохраните изменения в файле Entitlements.plist.
Добавление нового файла Entitlements.plist
Назначения добавляются в приложение при помощи файла Entitlements.plist. Этот файл по умолчанию включается в проекты Xamarin.iOS, но может отсутствовать в более ранних проектах.
Для добавления файла Entitlements.plist в проект Xamarin.iOS выполните следующее:
Щелкните правой кнопкой мыши файл проекта и перейдите к разделу "Добавить > новый файл"...:
В диалоговом окне "Создать файл" выберите список свойств iOS > и назовите его правами:
Справочник по ключам назначений
Ключи назначений добавляются через панель "Источник" редактора файла Entitlements.plist. Ключи назначений обычно добавляются при использовании редактора файла Entitlements.plist и приводятся здесь для справки.
Кошелек
Описание: приложение Wallet (прежнее название Passbook) хранит карты и управляет ими. Картами могут быть кредитные карты, карты скидок, посадочные талоны или билеты.
- Идентификатор типа карты
- Ключи: com.apple.developer.pass-type-identifiers
- Строка:
$(TeamIdentifierPrefix)*
- Идентификатор типа карты
Примечания:
- Это позволит вашему приложение работать со всеми типами карт. Чтобы ограничить работу приложения только с подмножеством типов карт, установите следующее значение строки:
$(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)
Здесь pass.$(CFBundleIdentifier) — ИД карты, созданный выше
- Это позволит вашему приложение работать со всеми типами карт. Чтобы ограничить работу приложения только с подмножеством типов карт, установите следующее значение строки:
iCloud
Описание: iCloud позволяет пользователям легко и удобно хранить свои данные и обмениваться ими между устройствами. Существуют четыре способа, с помощью которых разработчики могут использовать iCloud для предоставления пользователям средства хранения данных: хранилище ключ-значение, хранилище UIDocument, CoreData и прямое предоставление хранилища для отдельных файлов и каталогов при помощи CloudKit. Дополнительную информацию см. в руководстве "Введение в iCloud".
- Документы iCloud и CloudKit
- Ключи: com.apple.developer.ubiquity-container-identifiers
- Строка:
$(TeamIdentifierPrefix)$(CFBundleIdentifier)
- Хранилище iCloud KeyValue
- Ключ: com.apple.developer.ubiquity-kvstore-identifier
- Строка:
$(TeamIdentifierPrefix)$(CFBundleIdentifier)
- Документы iCloud и CloudKit
Примечания:
- Строка
$(TeamIdentifierPrefix)
может находиться путем ведения журнала, чтобы developer.apple.com и посетить > сводку учетной записи разработчика учетной записи > участника, чтобы получить идентификатор команды (или отдельный идентификатор для отдельных разработчиков). Идентификатор представляет собой строку длиной 10 символов (например, A93A5CM278). - Строка
$(CFBundleIdentifier)
начинается сiCloud
и имеет значение, когда упакован контейнер iCloud, как это описано в руководстве Работа с возможностями. - Заполнители $
(TeamIdentifierPrefix)
и$(CFBundleIdentifier)
можно использовать, и они будут заменены на правильные значения во время сборки.
- Строка
Внимание
Компания Apple предоставляет инструменты, которые помогают разработчикам надлежащим образом соблюдать Общий регламент по защите данных Европейского союза (GDPR).
Группы приложений
Описание: использование групп приложений позволяет различным приложениям (или приложению и его расширениям) обращаться к общему месту размещения файлов.
- Ключ: com.apple.security.application-groups
- Строка: group.$(CFBundleIdentifier)
Apple Pay
- Описание: Apple Pay позволяет пользователям оплачивать физические товары со своего устройства iOS.
- Ключ: com.apple.developer.in-app-payments
- Строка: merchant.your.mechantid
Push-уведомления
- Ключ: aps-environment
- Строка:
development
илиproduction
Siri
- Описание: SiriKit позволяет приложению iOS предоставлять услуги, которые будут доступны для Siri и приложения "Карты" на устройстве iOS при помощи расширений приложений и новых инструментов Intents и Intents UI. Подробные сведения см. в руководстве "Введение в SiriKit".
- Ключ: com.apple.developer.siri
Личная VPN
- Ключ: com.apple.developer.networking.vpn.api
- Строка: allow-vpn
Обмен связками ключей
- Описание: обмен связками ключей позволяет разработчикам приложений предоставлять доступ к паролям, которые хранятся в связке ключей устройства, другим приложениям, разработанным той же командой разработчиков. Доступ может быть ограничен путем передачи в строке идентификатора доступа к связке ключей.
- Ключ: keychain-access-groups
- Строка: $(AppIdentifierPrefix) $(CFBundleIdentifier)
Звук между приложениями
- Описание: функция звука между приложениями позволяет разработчикам передавать аудиопоток из одного приложения в другое.
- Ключ: inter-app-audio
- Логическое: ДА
Связанные домены
- Описание: связанные домены, которые должны обрабатываться как универсальные ссылки, необходимо передавать с этим назначением. Для обеспечения глубокой связи между приложением и веб-сайтом можно использовать универсальные ссылки. Необходимо создать запись для каждого домена, с которым работает ваше приложение. Каждая запись должна начинаться с
applinks:
- Ключ: com.apple.developer.associated-domains
- Строка: webcredentials:example.com
Защита данных
- Описание: функция защиты данных использует встроенное оборудование для шифрования для хранения конфиденциальных данных вашего приложения в зашифрованном виде. По умолчанию уровень защиты установлен на полную защиту (файлы доступны только тогда, когда устройство разблокировано).
- Ключ: com.apple.developer.default-data-protection
- Строка: NSFileProtectionComplete
HomeKit
- Описание: фреймворк HomeKit предоставляет платформу для установки, настройки и управления поддерживаемыми устройствами для домашней автоматизации — всех с одного устройства iOS. Дополнительные сведения об использовании HomeKit см. в руководстве "Введение в HomeKit".
- Ключ: com.apple.developer.homekit
- Логическое: ДА
HealthKit
- Описание: фреймворк HealthKit впервые появился в iOS 8, он предоставляет централизованное, скоординированное и безопасное хранилище связанных со здоровьем данных. Дополнительные сведения об использовании HealthKit см. в руководстве "Введение в HealthKit".
- Ключ: com.apple.developer.healthkit
- Логическое: ДА
Конфигурация беспроводных периферийных устройств
- Описание. Использование конфигурации беспроводного аксессуара позволяет приложению настраивать аксессуары MFi Wi-Fi
- Ключ: com.apple.external-accessory.wireless-configuration
- Логическое: ДА
ClassKit
- Описание: ClassKit позволяет преподавателям просматривать прогресс учащихся по выданным заданиям в вашем приложении.
- Ключ: com.apple.developer.ClassKit-environment
- Строка:
development
илиproduction
Итоги
Это руководство описывает использование назначений в Visual Studio для Mac и Visual Studio. В нем также приведен справочник пар ключ/значение для каждой возможности.