Права iOS

В iOS приложения .NET Multi-platform App UI (.NET MAUI) выполняются в песочнице, которая предоставляет набор правил, ограничивающих доступ между ресурсами приложения и системными ресурсами или данными пользователей. Права используются для запроса расширения песочницы для предоставления приложению дополнительных возможностей, таких как интеграция с Siri. Все права, используемые приложением, должны быть указаны в файле Applications.plist . Дополнительные сведения о правах см. в developer.apple.com.

Помимо указания прав, файл Entitlements.plist используется для написания подписывания приложения. При подписании кода файл прав объединяется с информацией из учетной записи разработчика Apple и другими сведениями о проекте, чтобы применить к приложению окончательный набор прав.

Права тесно связаны с понятием возможностей. Они оба запрашивают расширение песочницы, в которой выполняется приложение, чтобы предоставить ему дополнительные возможности. Права обычно добавляются при разработке приложения, а возможности обычно добавляются при подписании кода приложения для распространения. Однако при включении автоматической подготовки добавление определенных прав в приложение также обновит возможности приложения в своем профиле подготовки. Дополнительные сведения см. в разделе "Добавление возможностей с помощью Visual Studio".

Внимание

Файл Entitlements.plist не связан с учетной записью разработчика Apple. Поэтому при создании профиля подготовки для приложения следует убедиться, что все права, используемые приложением, также указаны в качестве возможностей в профиле подготовки. Дополнительные сведения см. в разделе Характеристики.

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

Чтобы добавить новый файл прав в проект приложения .NET MAUI, добавьте новый XML-файл с именем Entitlements.plist в папку Platform\iOS проекта приложения. Затем добавьте следующий XML-код в файл:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
</dict>
</plist>

Настройка прав

Права можно настроить в Visual Studio, дважды щелкнув файл Entitlements.plist , чтобы открыть его в редакторе прав:

  1. В Обозреватель решений дважды щелкните файл Entitlements.plist из папки "Платформы > iOS" проекта приложения .NET MAUI, чтобы открыть его в редакторе прав.

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

    Редактор прав Для iOS Visual Studio.

  3. Сохраните изменения в файле Entitlements.plist , чтобы добавить пары "ключ-значение" в файл.

Также может потребоваться задать ключи конфиденциальности в Info.plist для определенных прав.

Использование прав

Приложение .NET MAUI iOS должно быть настроено в Visual Studio для использования прав, определенных в файле Entitlements.plist :

  1. В Обозреватель решений щелкните правой кнопкой мыши проект приложения .NET MAUI и выберите "Свойства". Затем перейдите на вкладку подписывания пакета iOS>.

  2. В параметрах подписывания пакета нажмите кнопку "Обзор" для поля "Пользовательские права".

  3. В диалоговом окне "Пользовательские права" перейдите в папку, содержащую файл Entitlements.plist, выберите файл и нажмите кнопку "Открыть".

  4. В свойствах проекта поле "Настраиваемые права" будет заполнено файлом прав:

    Набор полей настраиваемых прав Visual Studio.

  5. Закройте свойства проекта.

Примечание.

Visual Studio установит поле настраиваемых прав для сборок отладки и выпуска.


При включении автоматической подготовки в качестве возможностей также будет добавлено подмножество прав. Дополнительные сведения см. в разделе "Добавление возможностей с помощью Visual Studio".

Справочник по ключу

Пары ключей и значений прав перечислены ниже для справки. В Visual Studio их можно добавить, изменив файл Entitlements.plist в виде XML-файла. В Visual Studio Code их можно добавить, изменив XML-файл в файле Entitlements.plist .

Доступ к сведениям о Wi-Fi

Это право доступа к данным Wi-Fi позволяет приложению получать сведения о подключенной сети WiFi.

Назначение определяется с помощью com.apple.developer.networking.wifi-info ключа типа Boolean:

<key>com.apple.developer.networking.wifi-info</key>
<true/>

Дополнительные сведения см. в разделе " Доступ к данным WiFi" на developer.apple.com.

Аттестация приложений

С помощью права App Attest вы можете создать специальный криптографический ключ на устройстве и использовать его для проверки целостности приложения перед тем, как сервер предоставляет доступ к конфиденциальным данным.

Назначение определяется с помощью com.apple.developer.devicecheck.appattest-environment ключа типа String:

<key>com.apple.developer.devicecheck.appattest-environment</key>
<string>development</string>

Дополнительные сведения см. в разделе " Среда аттестации приложений" в developer.apple.com.

Группы приложений

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

Назначение определяется с помощью com.apple.security.application-groups ключа типа Array String:

<key>com.apple.security.application-groups</key>
<array>
  <string>group.MyAppGroups</string>
</array>

Дополнительные сведения см. в разделе "Права групп приложений" на developer.apple.com.

Apple Pay

Право Apple Pay позволяет пользователям легко и безопасно платить за физическое благо и услуги, такие как продукты, одежда, билеты и резервирования, используя платежную информацию, хранящуюся на своем устройстве.

Назначение определяется с помощью com.apple.developer.in-app-payments ключа типа Array String:

<key>com.apple.developer.in-app-payments</key>
<array>
  <string>merchant.your.merchantid</string>
</array>

Дополнительные сведения см. в разделе "Идентификаторы продавцов" на developer.apple.com.

Связанные домены

Права связанных доменов позволяют приложению связываться с определенными доменами для определенных служб, таких как доступ к Safari, сохраненные пароли и продолжение действий.

Назначение определяется с помощью com.apple.developer.associated-domains ключа типа Array String:

<key>com.apple.developer.associated-domains</key>
<array>
  <string>webcredentials:example.com</string>
</array>

Дополнительные сведения см. в разделе "Права связанных доменов" на developer.apple.com.

Поставщик учетных данных автозаполнения

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

Назначение определяется с помощью com.apple.developer.authentication-services.autofill-credential-provider ключа типа Boolean:

<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>

Дополнительные сведения см. в разделе "Право поставщика учетных данных автозаполнения" на developer.apple.com.

ClassKit

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

Назначение определяется с помощью com.apple.developer.ClassKit-environment ключа типа String:

<key>com.apple.developer.ClassKit-environment</key>
<string>development</string>

Дополнительные сведения см. в разделе "Права среды ClassKit" на developer.apple.com.

Обмен данными с драйверами

Обмен данными с правами драйверов позволяет взаимодействовать между драйверами приложения и DriverKit.

Назначение определяется с помощью com.apple.developer.driverkit.communicates-with-drivers ключа типа Boolean:

<key>com.apple.developer.driverkit.communicates-with-drivers</key>
<true/>

Дополнительные сведения см. в разделе "Обмен данными с драйверами " на developer.apple.com.

Уведомления об обмене данными

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

Назначение определяется с помощью com.apple.developer.usernotifications.communication ключа типа Boolean:

<key>com.apple.developer.usernotifications.communication</key>
<true/>

Дополнительные сведения см. в разделе "Право службы уведомлений запросов" на developer.apple.com.

Защита данных

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

Назначение определяется с помощью com.apple.developer.default-data-protection ключа типа String:

<key>com.apple.developer.default-data-protection</key>
<string>NSFileProtectionComplete</string>

Дополнительные сведения см. в разделе "Права защиты данных" на developer.apple.com.

Расширенная виртуальная адресация

Расширенные права виртуальной адресации позволяют использовать больше адресного пространства в приложении.

Назначение определяется с помощью com.apple.developer.kernel.extended-virtual-addressing ключа типа Boolean:

<key>com.apple.developer.kernel.extended-virtual-addressing</key>
<true/>

Дополнительные сведения см. в разделе "Расширенные права на виртуальные адресации" на developer.apple.com.

Семейные элементы управления

Права управления семьей позволяют управлять родительскими элементами в приложении, предоставляя доступ к платформам управляемых параметров и действий устройств в API ScreenTime. Для использования элементов управления семействами требуется общий доступ к семейству для регистрации пользователей. Он предотвращает удаление приложения и включает фильтры содержимого на устройстве из сетевых расширений.

Назначение определяется с помощью com.apple.developer.family-controls ключа типа Boolean:

<key>com.apple.developer.family-controls</key>
<true/>

Дополнительные сведения см. в разделе "Управление семействами" на developer.apple.com.

Режим тестирования FileProvider

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

Назначение определяется с помощью com.apple.developer.fileprovider.testing-mode ключа типа Boolean:

<key>com.apple.developer.fileprovider.testing-mode</key>
<true/>

Дополнительные сведения см. в разделе "Режим тестирования FileProvider" в developer.apple.com.

Fonts

Права шрифтов позволяют приложению с разрешением пользователя устанавливать и использовать пользовательские шрифты.

Назначение определяется с помощью com.apple.developer.user-fonts ключа типа Array String:

<key>com.apple.developer.user-fonts</key>
<array>
  <string>system-installation</string>
</array>

Дополнительные сведения см. в разделе "Настройка настраиваемых шрифтов " на developer.apple.com.

Групповые действия

Право на действия группы позволяет приложению взаимодействовать с тем же приложением на одном или нескольких устройствах, чтобы создать действие группы в вызове FaceTime. Групповые действия в FaceTime позволяют пользователям просматривать видео вместе, слушать музыку вместе или выполнять другое синхронное действие.

Назначение определяется с помощью com.apple.developer.group-session ключа типа Boolean:

<key>com.apple.developer.group-session</key>
<true/>

Дополнительные сведения см. в разделе "Права на действия группы" на developer.apple.com.

HealthKit

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

Назначение определяется с помощью com.apple.developer.healthkit ключа типа Boolean:

<key>com.apple.developer.healthkit</key>
<true/>

Дополнительные сведения см. в разделе "Права HealthKit" на developer.apple.com.

HomeKit

Назначение HomeKit позволяет приложению взаимодействовать с аксессуарами HomeKit.

Назначение определяется с помощью com.apple.developer.homekit ключа типа Boolean:

<key>com.apple.developer.homekit</key>
<true/>

Дополнительные сведения см. в разделе "Права HomeKit" на developer.apple.com.

Конфигурация хот-точки

Право на доступ к конфигурации хот-точки позволяет приложению настраивать сети WiFi.

Назначение определяется с помощью com.apple.developer.networking.HotspotConfiguration ключа типа Boolean:

<key>com.apple.developer.networking.HotspotConfiguration</key>
<true/>

Дополнительные сведения см. в разделе "Права на настройку хот-точки" на developer.apple.com.

iCloud

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

Назначение определяется с помощью com.apple.developer.icloud-container-development-container-identifiers ключа типа, а затем дополнительных ключей, Array Stringпредставляющих идентификатор контейнера:

<key>com.apple.developer.icloud-container-identifiers</key>
<array>
  <string>iCloud.com.companyname.test</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>

$(CFBundleIdentifier) Заполнители $(AppIdentifierPrefix) будут заменены правильными значениями во время сборки.

Дополнительные сведения см. в разделе "Права на идентификаторы контейнеров iCloud" на developer.apple.com.

Увеличение ограничения памяти

Увеличение ограничения памяти позволяет приложению превышать ограничение памяти приложения по умолчанию на поддерживаемых устройствах.

Назначение определяется с помощью com.apple.developer.kernel.increased-memory-limit ключа типа Boolean:

<key>com.apple.developer.kernel.increased-memory-limit</key>
<true/>

Дополнительные сведения см. в разделе "Увеличение ограничения памяти " на developer.apple.com.

Звук между приложениями

Право на звук между приложениями позволяет приложению отправлять и получать звук из других приложений с поддержкой звука между приложениями.

Назначение определяется с помощью inter-app-audio ключа типа Boolean:

<key>inter-app-audio</key>
<true/>

Дополнительные сведения см. в разделе "Право аудио между приложениями" на developer.apple.com.

Внимание

Это право устарело в iOS 13 и недоступно при запуске приложений iPads в macOS.

Цепочка ключей

Право цепочки ключей позволяет нескольким приложениям, написанным одной командой, совместно использовать пароли.

Назначение определяется с помощью keychain-access-groups ключа типа Array String:

<key>keychain-access-groups</key>
<array>
  <string>$(AppIdentifierPrefix)com.companyname.test</string>
</array>

Дополнительные сведения см. в разделе " Группы доступа к цепочке ключей" на developer.apple.com.

Управляемые домены MDM

Права управляемых доменов управления мобильными приложениями (MDM) позволяют MDM дополнять связанные домены, которые включены в приложение со значениями, такими как имена серверов, уникальные для среды.

Назначение определяется с помощью com.apple.developer.associated-domains.mdm-managed ключа типа Boolean:

<key>com.apple.developer.associated-domains.mdm-managed</key>
<true/>

Несколько путей

Право Multipath позволяет приложению использовать протоколы с несколькими путими, такими как TCP Multipath, которые будут легко передавать трафик из одного интерфейса в другой.

Назначение определяется с помощью com.apple.developer.networking.multipath ключа типа Boolean:

<key>com.apple.developer.networking.multipath</key>
<true/>

Дополнительные сведения см. в разделе "Управление несколькими путими" на developer.apple.com.

Средство чтения тегов связи рядом с полем

Право чтения тегов тега близкого поля позволяет приложению считывать теги обмена данными NFC (NDEF) рядом с полем связи (NFC).

Назначение определяется с помощью com.apple.developer.nfc.readersession.formats ключа типа Array String:

<key>com.apple.developer.nfc.readersession.formats</key>
<array>
  <string>NDEF</string>
  <string>TAG</string>
</array>

Дополнительные сведения см. в разделе "Форматы сеансов чтения тегов близкого поля" на developer.apple.com.

Сетевые расширения

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

Назначение определяется с помощью com.apple.developer.networking.networkextension ключа типа Array String:

<key>com.apple.developer.networking.networkextension</key>
<array>
  <string>content-filter-provider</string>
</array>

Дополнительные сведения см. в разделе "Права на расширения сети" на developer.apple.com.

Личная VPN

Личное назначение VPN позволяет приложению использовать пользовательские VPN-подключения.

Назначение определяется с помощью com.apple.developer.networking.vpn.api ключа типа Array String:

<key>com.apple.developer.networking.vpn.api</key>
<array>
  <string>allow-vpn</string>
</array>

Дополнительные сведения см. в разделе "Личное VPN-право " на developer.apple.com.

Push-уведомления

Права push-уведомлений позволяют приложению получать push-уведомления.

Назначение определяется с помощью aps-environment ключа типа String:

<key>aps-environment</key>
<string>development</string>

Дополнительные сведения см. в разделе "Права среды APS" на developer.apple.com.

Push to talk

Отправка сообщений о правах на разговор позволяет приложению сообщать о каналах Push to Talk в систему, чтобы он мог обрабатывать передачу и получение фонового звука.

Назначение определяется с помощью com.apple.developer.push-to-talk ключа типа Boolean:

<key>com.apple.developer.push-to-talk</key>
<true/>

Дополнительные сведения см. в статье Push to Talk Entitlement on developer.apple.com.

Общий доступ к вам

Общий доступ с правами позволяет приложению требовать ссылки, общие в беседах с сообщениями, и для их предоставления доступ к нему через платформу "Общий доступ" с помощью платформы "Вы".

Назначение определяется с помощью com.apple.developer.shared-with-you ключа типа Boolean:

<key>com.apple.developer.shared-with-you</key>
<true/>

Вход с помощью Apple

Вход с правами Apple позволяет пользователям проходить проверку подлинности с помощью Apple ID.

Назначение определяется с помощью com.apple.developer.applesignin ключа типа Array String:

<key>com.apple.developer.applesignin</key>
<array>
  <string>Default</string>
</array>

Дополнительные сведения см. в разделе "Вход с помощью прав Apple" на developer.apple.com.

Siri

Право Siri позволяет приложению обрабатывать запросы Siri.

Назначение определяется с помощью com.apple.developer.siri ключа типа Boolean:

<key>com.apple.developer.siri</key>
<true/>

Дополнительные сведения см. в разделе "Права Siri" на developer.apple.com.

Уведомления с учетом времени

Права на уведомления с учетом времени позволяют приложению обрабатывать уведомления, чувствительные к времени. Конфиденциальные уведомления по времени предоставляют информацию, требующую немедленного внимания, и напрямую обращается к лицу, чтобы принять меры на момент получения уведомления. Оповещения с учетом времени всегда доставляются немедленно, отображаются над другими уведомлениями и могут прерываться через фокус и не беспокоить.

Назначение определяется с помощью com.apple.developer.usernotifications.time-sensitive ключа типа Boolean:

<key>com.apple.developer.usernotifications.time-sensitive</key>
<true/>

Кошелек

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

Назначение определяется с помощью com.apple.developer.pass-type-identifiers ключа типа Array String:

<key>com.apple.developer.pass-type-identifiers</key>
<array>
  <string>$(TeamIdentifierPrefix)*</string>
</array>

В этом примере приложение позволит разрешить все типы проходов. Чтобы ограничить приложение и разрешить только набор типов передач команды, задайте строковое значение $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier) , где pass.$(CFBundleIdentifier) находится идентификатор pass.

Дополнительные сведения см. в разделе "Идентификаторы типа передачи " на developer.apple.com.

WeatherKit

Право WeatherKit позволяет приложению получать и обрабатывать текущую и прогнозируемую информацию о погоде.

Назначение определяется с помощью com.apple.developer.weatherkit ключа типа Boolean:

<key>com.apple.developer.weatherkit</key>
<true/>

Дополнительные сведения см. в разделе "Права WeatherKit" на developer.apple.com.

Конфигурация беспроводного аксессуара

Разрешение на настройку беспроводной аксессуаров позволяет приложению настраивать аксессуары WiFi.

Назначение определяется с помощью com.apple.external-accessory.wireless-configuration ключа типа Boolean:

<key>com.apple.external-accessory.wireless-configuration</key>
<true/>

Дополнительные сведения см. в разделе "Права конфигурации беспроводного доступа" на developer.apple.com.