Работа с назначениями в 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 выполните следующее:

  1. На Панели решения дважды щелкните файл Info.plist, чтобы открыть его.

  2. В разделе Удостоверение введите имя приложения и идентификатор пакета, который был создан при определении идентификатора приложения:

    Enter a Bundle Identifier

  3. Сохраните изменения в файле Info.plist.

  4. На Панели решения дважды щелкните файл Entitlements.plist, чтобы открыть его для редактирования:

    Editing the Entitlements

  5. Выберите и настройте назначения для приложения Xamarin.iOS таким образом, чтобы соответствовать настройкам созданного ранее ИД приложения.

  6. Сохраните изменения в файле Entitlements.plist.

Добавление нового файла Entitlements.plist

Назначения добавляются в приложение при помощи файла Entitlements.plist. Этот файл по умолчанию включается в проекты Xamarin.iOS, но может отсутствовать в более ранних проектах.

Для добавления файла Entitlements.plist в проект Xamarin.iOS выполните следующее:

  1. Щелкните правой кнопкой мыши файл проекта и перейдите к разделу "Добавить > новый файл"...:

    Add Files context menu

  2. В диалоговом окне "Создать файл" выберите список свойств iOS > и назовите его правами:

    New File dialog

Справочник по ключам назначений

Ключи назначений добавляются через панель "Источник" редактора файла 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)
  • Примечания:

    • Строка $(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. В нем также приведен справочник пар ключ/значение для каждой возможности.