Udostępnij za pośrednictwem


Alternatywne ikony aplikacji na platformie Xamarin.iOS

W tym artykule opisano używanie alternatywnych ikon aplikacji na platformie Xamarin.iOS.

Firma Apple dodała kilka ulepszeń systemu iOS 10.3, które umożliwiają aplikacji zarządzanie jej ikoną:

  • ApplicationIconBadgeNumber — Pobiera lub ustawia znaczek ikony aplikacji na platformie Springboard.
  • SupportsAlternateIcons — Jeśli true aplikacja ma alternatywny zestaw ikon.
  • AlternateIconName — Zwraca nazwę aktualnie wybranej ikony alternatywnej lub null jeśli używasz ikony podstawowej.
  • SetAlternameIconName — Użyj tej metody, aby przełączyć ikonę aplikacji na daną ikonę alternatywną.

Przykładowy alert po zmianie ikony aplikacji

Dodawanie alternatywnych ikon do projektu Xamarin.iOS

Aby umożliwić aplikacji przełączenie się na alternatywną ikonę, kolekcja obrazów ikon musi zostać uwzględniona w projekcie aplikacji platformy Xamarin.iOS. Tych obrazów nie można dodać do projektu przy użyciu typowej Assets.xcassets metody. Należy je dodać bezpośrednio do folderu Resources .

Należy wykonać następujące czynności:

  1. Wybierz wymagane obrazy ikon w folderze, zaznacz wszystkie i przeciągnij je do folderu Resources w Eksplorator rozwiązań:

    Wybieranie obrazów ikon z folderu

  2. Po wyświetleniu monitu wybierz pozycję Kopiuj, użyj tej samej akcji dla wszystkich wybranych plików i kliknij przycisk OK :

    Okno dialogowe Dodawanie pliku do folderu

  3. Folder Resources powinien wyglądać podobnie do następującego po zakończeniu:

    Folder Resources powinien wyglądać następująco:

Modyfikowanie pliku Info.plist

Po dodaniu wymaganych obrazów do folderu Resources klucz CFBundleAlternateIcons należy dodać do pliku Info.plist projektu. Ten klucz zdefiniuje nazwę nowej ikony i obrazy, które go tworzą.

Należy wykonać następujące czynności:

  1. W Eksplorator rozwiązań kliknij dwukrotnie plik Info.plist, aby otworzyć go do edycji.
  2. Przejdź do widoku Źródła .
  3. Dodaj klucz Ikony pakietu i pozostaw wartość Typ ustawioną na Słownik.
  4. CFBundleAlternateIcons Dodaj klucz i ustaw typ na Słownik.
  5. AppIcon2 Dodaj klucz i ustaw typ na Słownik. Będzie to nazwa nowego zestawu ikon alternatywnej aplikacji.
  6. CFBundleIconFiles Dodawanie klucza i ustawianie typu na tablicę
  7. Dodaj nowy ciąg do CFBundleIconFiles tablicy dla każdego pliku ikon z pominięciem rozszerzenia i @2xsufiksów , @3xitp. (na przykład 100_icon). Powtórz ten krok dla każdego pliku tworzącego zestaw ikon alternatywnych.
  8. UIPrerenderedIcon Dodaj klucz do słownikaAppIcon2, ustaw wartość Typ na wartość logiczną, a wartość na Nie.
  9. Zapisz zmiany w pliku.

Wynikowy plik Info.plist powinien wyglądać następująco po zakończeniu:

Ukończony plik Info.plist

Lub w następujący sposób, jeśli został otwarty w edytorze tekstów:

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>AppIcon2</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>100_icon</string>
                <string>114_icon</string>
                <string>120_icon</string>
                <string>144_icon</string>
                <string>152_icon</string>
                <string>167_icon</string>
                <string>180_icon</string>
                <string>29_icon</string>
                <string>40_icon</string>
                <string>50_icon</string>
                <string>512_icon</string>
                <string>57_icon</string>
                <string>58_icon</string>
                <string>72_icon</string>
                <string>76_icon</string>
                <string>80_icon</string>
                <string>87_icon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
    </dict>
</dict>

Zarządzanie ikoną aplikacji

Po poprawnym skonfigurowaniu obrazów ikon w projekcie Xamarin.iOS i pliku Info.plist deweloper może użyć jednej z wielu nowych funkcji dodanych do systemu iOS 10.3, aby kontrolować ikonę aplikacji.

Właściwość SupportsAlternateIconsUIApplication klasy 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ść ApplicationIconBadgeNumberUIApplication klasy umożliwia deweloperowi pobranie lub ustawienie bieżącego numeru znaczka ikony aplikacji na platformie Springboard. Wartością domyślną jest zero (0). Na przykład:

// Set the badge number to 1
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;

Właściwość AlternateIconNameUIApplication klasy umożliwia deweloperowi uzyskanie nazwy aktualnie wybranej alternatywnej ikony aplikacji lub zwraca null ją, 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ść SetAlternameIconNameUIApplication klasy umożliwia deweloperowi zmianę ikony aplikacji. Przekaż nazwę ikony, aby wybrać lub null wrócić do ikony podstawowej. Na przykład:

partial void UsePrimaryIcon (Foundation.NSObject sender)
{
    UIApplication.SharedApplication.SetAlternateIconName (null, (err) => {
        Console.WriteLine ("Set Primary Icon: {0}", err);
    });
}

partial void UseAlternateIcon (Foundation.NSObject sender)
{
    UIApplication.SharedApplication.SetAlternateIconName ("AppIcon2", (err) => {
        Console.WriteLine ("Set Alternate Icon: {0}", err);
    });
}

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

Przykładowy alert po zmianie ikony aplikacji

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ą

Podsumowanie

W tym artykule opisano dodawanie alternatywnych ikon aplikacji do projektu platformy Xamarin.iOS i używanie ich wewnątrz aplikacji.