Udostępnij za pośrednictwem


Alternatywne ikony aplikacji na platformie .NET dla systemów iOS i tvOS

Apple ma kilka interfejsów API UIApplication, które umożliwiają aplikacji zarządzanie jej ikoną.

  • UIApplication.SupportsAlternateIcons — jeśli true aplikacja ma alternatywny zestaw ikon.
  • UIApplication.AlternateIconName — zwraca nazwę aktualnie wybranej ikony alternatywnej lub null, jeśli używasz ikony podstawowej.
  • UIApplication.SetAlternateIconName — użyj tej metody, aby przełączyć ikonę aplikacji na daną ikonę alternatywną.
  • UNUserNotificationCenter.Current.SetBadgeCount — ustawia liczbę powiadomień na ikonie aplikacji w Springboardzie (nieaktualne w systemach iOS 16+ i tvOS 16+).

przykładowy alert, gdy aplikacja zmieni ikonę

Dodawanie alternatywnych ikon do projektu platformy .NET

Aby umożliwić aplikacji przełączenie się na ikonę alternatywną, nowy folder .appiconset z kolekcją obrazów ikon musi zostać uwzględniony w wykazie zasobów projektu:

  1. Otwórz katalog zasobów projektu (Assets.xcassets) w programie Finder:

    Otwórz katalog zasobów

  2. Utwórz kopię istniejącego folderu AppIcon.appiconset:

    skopiuj folder appiconset

  3. Zastąp każdą ikonę w skopiowanych folderach nową ikoną pasującego rozmiaru:

    Tworzenie nowych ikon

  4. Dodaj ikonę aplikacji do pliku projektu przy użyciu właściwości AppIcon:

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

    Notatka

    Istniejące projekty zazwyczaj określają ikonę aplikacji przy użyciu klucza XSAppIconAssets w pliku Info.plist — nadal można go użyć, ale zaleca się przełączenie do właściwości AppIcon w pliku projektu (która jest również prostsza, ponieważ jego wartość jest nazwą ikony, a nie ścieżką do zasobu).

  5. Dodaj alternatywne ikony do pliku projektu przy użyciu grupy elementów AlternativeAppIcons:

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

Zarządzanie ikoną aplikacji

Za pomocą obrazów ikon zawartych w projekcie platformy .NET deweloper może kontrolować ikonę aplikacji na następujące sposoby.

Właściwość SupportsAlternateIcons klasy UIApplication umożliwia deweloperowi sprawdzenie, czy aplikacja obsługuje ikony alternatywne. Na przykład:

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

Właściwość ApplicationIconBadgeNumber klasy UIApplication umożliwia deweloperowi pobranie lub ustawienie bieżącej liczby znaczek ikony aplikacji na platformie Springboard. Wartość domyślna to zero (0). Na przykład:

// 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 ())}");
}

Uwaga

UNUserNotificationCenter.SetBadgeCount wymaga autoryzacji od użytkownika w systemie iOS, który można uzyskać przez wywołanie UNUserNotificationCenter.Current.RequestAuthorization przed ustawieniem liczby znaczek.

Właściwość AlternateIconName klasy UIApplication umożliwia deweloperowi pobranie nazwy aktualnie wybranej alternatywnej ikony aplikacji lub zwrócenie , jeśli aplikacja używa ikony podstawowej. Na przykład:

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

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

Właściwość SetAlternameIconName klasy UIApplication umożliwia deweloperowi zmianę ikony aplikacji. Podaj nazwę ikony, aby wybrać ikonę lub null, aby wrócić do ikony głównej. Na przykład:

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 ())}");
    });
}

Po uruchomieniu aplikacji i wybraniu przez użytkownika alternatywnej ikony zostanie wyświetlony alert podobny do następującego:

przykładowy alert, gdy aplikacja zmieni ikonę

Jeśli użytkownik przełączy się z powrotem do ikony podstawowej, zostanie wyświetlony alert podobny do następującego:

przykładowy alert, gdy aplikacja zmieni się na ikonę podstawową

Zobacz też