Возможности Mac Catalyst

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

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

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

Добавление возможностей в учетную запись разработчика Apple

Возможности можно добавить в профиль подготовки приложения в учетной записи разработчика Apple. Это многоэтапный процесс, который требует создания сертификата подписи, идентификатора приложения и профиля подготовки.

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

Создание сертификата подписи

Создание профиля подготовки требует создания сертификата подписи. Тип сертификата подписи зависит от предполагаемого канала распространения для приложения:

Создание идентификатора приложения с помощью службы приложений

Идентификатор приложения похож на строку обратного DNS, которая однозначно идентифицирует приложение и требуется для идентификации распространяемого приложения. Идентификатор приложения должен совпадать с идентификатором пакета для приложения.

Внимание

Идентификатор пакета для приложения .NET MAUI хранится в файле проекта в качестве свойства идентификатора приложения. В Visual Studio в Обозреватель решений щелкните правой кнопкой мыши проект приложения .NET MAUI и выберите "Свойства". Затем перейдите на вкладку "Общие > общие " MAUI. Поле идентификатора приложения содержит идентификатор пакета.

При обновлении значения поля идентификатора приложения значение идентификатора пакета в info.plist будет автоматически обновлено.

Существует два типа идентификатора приложения — явный и подстановочный знак. Явный идентификатор приложения является уникальным для одного приложения и обычно принимает форму com.domainname.myid. Явный идентификатор приложения позволяет установить одно приложение с соответствующим идентификатором пакета на устройство. Явные идентификаторы приложений необходимы для приложений, которые обеспечивают возможности для конкретных приложений.

Явный идентификатор приложения можно создать с помощью следующих действий:

  1. В веб-браузере перейдите в раздел "Идентификаторы " учетной записи разработчика Apple и нажмите кнопку + .

  2. На странице "Регистрация нового идентификатора" выберите идентификаторы приложений и нажмите кнопку "Продолжить".

  3. На странице "Регистрация нового идентификатора" выберите тип приложения и нажмите кнопку "Продолжить".

  4. На странице "Регистрация идентификатора приложения" укажите описание и задайте идентификатор пакета явным. Затем введите идентификатор приложения в формате com.domainname.myid:

    Снимок экрана: страница регистрации идентификатора приложения с заполненными обязательными полями.

  5. На странице "Регистрация идентификатора приложения" включите необходимые возможности на вкладках "Возможности" и Служба приложений s:

    Снимок экрана: включенные возможности.

  6. На странице "Регистрация идентификатора приложения" нажмите кнопку "Продолжить".

  7. На странице "Подтверждение идентификатора приложения" просмотрите сведения и нажмите кнопку "Зарегистрировать". Если идентификатор приложения успешно регистрируется, вы вернетесь в раздел "Идентификаторы" учетной записи разработчика Apple.

  8. На странице "Идентификаторы" щелкните только что созданный идентификатор приложения.

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

    Снимок экрана: возможности редактирования.

    Нажмите все кнопки "Настройка", чтобы настроить включенные возможности. Дополнительные сведения см. в разделе "Настройка возможностей приложений " на developer.apple.com.

Создание профиля обеспечения

После создания идентификатора приложения необходимо создать профиль подготовки для идентификатора приложения. Создаваемый профиль подготовки также зависит от предполагаемого канала распространения для приложения:

Скачивание профиля подготовки в Xcode

После создания профиля подготовки в учетной записи разработчика Apple Xcode может скачать его, чтобы он был доступен для подписывания приложения:

  1. На компьютере Mac запустите Xcode.

  2. В Xcode выберите пункт меню Xcode > Preferences...

  3. В диалоговом окне "Параметры" выберите вкладку "Учетные записи".

  4. На вкладке "Учетные записи" нажмите + кнопку, чтобы добавить учетную запись разработчика Apple в Xcode:

    Диалоговое окно

  5. Во всплывающем окне типа учетной записи выберите Apple ID и нажмите кнопку "Продолжить ":

    Xcode выберите тип учетной записи, которую вы хотите добавить.

  6. Во всплывающем окне входа введите идентификатор Apple ID и нажмите кнопку "Далее ".

  7. Во всплывающем окне входа введите пароль Apple ID и нажмите кнопку "Далее ":

    Вход в учетную запись Xcode Apple.

  8. На вкладке "Учетные записи" нажмите кнопку "Управление сертификатами", чтобы убедиться, что сертификат распространителя скачан.

  9. На вкладке "Учетные записи" нажмите кнопку "Скачать профили вручную" , чтобы скачать профили подготовки:

    Сведения об учетной записи программы разработчика Xcode Apple.

  10. Дождитесь завершения скачивания и закройте Xcode.

Определение свойств сборки в файле проекта

Файл проекта приложения следует обновить, чтобы использовать сертификат подписи, профиль подготовки и файл прав. Это можно сделать, добавив в файл проекта следующие свойства <PropertyGroup> сборки:

Свойство Значение
<CodesignKey> Имя ключа подписывания кода. Задайте имя сертификата распространения, как показано в keychain Access.
<CodesignEntitlements> Путь к файлу прав, который указывает необходимые для приложения права. Задайте значение Platforms\MacCatalyst\Entitlements.plist.
<CodesignProvision> Профиль подготовки, используемый при подписи пакета приложений.
<EnableCodeSigning> Задайте для true включения подписывания кода.

В следующем примере показана типичная группа свойств для создания и подписывания приложения Mac Catalyst для распространения Mac App Store:

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
  <EnableCodeSigning>True</EnableCodeSigning>
  <CodesignKey>Apple Distribution: John Smith (AY2GDE9QM7)</CodesignKey>
  <CodesignProvision>MyMauiApp</CodesignProvision>
  <CodesignEntitlements>Platforms\MacCatalyst\Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

Устранение неполадок

В следующем списке описаны распространенные проблемы, которые могут вызвать проблемы при разработке приложения .NET MAUI Mac Catalyst, использующего возможности:

  • Убедитесь, что правильный идентификатор приложения был создан и зарегистрирован в разделе "Идентификаторы " учетной записи разработчика Apple.
  • Убедитесь, что эта возможность добавлена в идентификатор приложения и что эта возможность настроена с использованием правильных значений.
  • Убедитесь, что профиль подготовки установлен на компьютере разработки и что файл Info.plist приложения использует идентификатор пакета, идентичный идентификатору приложения.
  • Убедитесь, что файл applications.plist имеет правильные права.
  • Убедитесь, что все необходимые ключи конфиденциальности заданы в Info.plist.
  • Убедитесь, что приложение использует файл Entitlements.plist .