Поделиться через


Альтернативные значки приложений в .NET для iOS и tvOS

Apple имеет несколько api UIApplication, которые позволяют приложению управлять своим значком:

  • UIApplication.SupportsAlternateIcons - Если в true приложении есть альтернативный набор значков.
  • UIApplication.AlternateIconName — возвращает имя выбранного в данный момент альтернативного значка или null при использовании первичного значка.
  • UIApplication.SetAlternateIconName. Используйте этот метод, чтобы переключить значок приложения на указанный альтернативный значок.
  • UNUserNotificationCenter.Current.SetBadgeCount. Задает количество значков приложения в Springboard (не рекомендуется в iOS 16+ и tvOS 16+).

Пример оповещения при изменении значка приложения

Добавление альтернативных значков в проект .NET

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

  1. Откройте каталог ресурсов проекта (Assets.xcassets) в Finder:

    Открыть каталог активов

  2. Создайте копию существующей папки AppIcon.appiconset:

    Копировать папку appiconset

  3. Замените каждый значок в скопированной папке новым значком соответствующего размера:

    Создание значков

  4. Добавьте значок приложения в файл проекта с помощью свойства AppIcon:

    <PropertyGroup>
        <AppIcon>AppIcon</AppIcon>
    </PropertyGroup>
    

    Заметка

    Существующие проекты обычно указывают значок приложения с помощью ключа XSAppIconAssets в файле Info.plist . Это все еще можно использовать, но рекомендуется переключиться на свойство AppIcon в файле проекта (это проще, так как его значение — это имя значка, а не путь к ресурсу).

  5. Добавьте альтернативные значки в файл проекта с помощью группы элементов AlternativeAppIcons:

    <ItemGroup>
        <AlternativeAppIcon Include="AlternativeAppIcons" />
    </ItemGroup>
    

Управление значком приложения

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

Свойство SupportsAlternateIcons класса UIApplication позволяет разработчику узнать, поддерживает ли приложение альтернативные значки. Например:

// Can the app select a different icon?
primaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
alternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;

Свойство ApplicationIconBadgeNumber класса UIApplication позволяет разработчику получить или задать текущее число на значке приложения в Springboard. Значение по умолчанию равно нулю (0). Например:

// Set the badge number to 1
var badgeCount = 1;
UNUserNotificationCenter.Current.SetBadgeCount (badgeCount, (error) => {
    Console.WriteLine ($"Set badge count to {badgeCount}: {(error is null ? "successfully" : error.ToString ())}");
}

Заметка

UNUserNotificationCenter.SetBadgeCount требуется авторизация от пользователя в iOS, который можно получить путем вызова UNUserNotificationCenter.Current.RequestAuthorization перед настройкой счетчика значков.

Свойство AlternateIconName класса UIApplication позволяет разработчику получить имя выбранного альтернативного значка приложения или возвращает null, если приложение использует основной значок. Например:

// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;

if (name != null ) {
    // Do something with the name
}

Свойство SetAlternameIconName класса UIApplication позволяет разработчику изменить значок приложения. Укажите имя значка, чтобы его выбрать, или null, чтобы вернуться к основному значку. Например:

void UsePrimaryIcon (Foundation.NSObject sender)
{
    UIApplication.SharedApplication.SetAlternateIconName (null, (error) => {
        Console.WriteLine ($"Set Primary Icon: {(error is null ? "successfully" : error.ToString ())}");
    });
}

void UseAlternateIcon (Foundation.NSObject sender)
{
    UIApplication.SharedApplication.SetAlternateIconName ("AlternateAppIcons", (error) => {
        Console.WriteLine ($"Set Alternate Icon: {(error is null ? "successfully" : error.ToString ())}");
    });
}

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

Пример оповещения при изменении значка приложения

Если пользователь переключается обратно на первичный значок, отобразится предупреждение, например следующее:

Пример оповещения при изменении приложения на основной значок

См. также