Alternativa appikoner i .NET för iOS och tvOS
Apple har flera UIApplication API:er som gör att en app kan hantera sin ikon:
-
UIApplication.SupportsAlternateIcons – Om
true
appen har en alternativ uppsättning ikoner. -
UIApplication.AlternateIconName – Returnerar namnet på den alternativa ikonen som för närvarande är markerad eller
null
om du använder den primära ikonen. - UIApplication.SetAlternateIconName – Använd den här metoden för att växla appens ikon till den angivna alternativa ikonen.
-
UNUserNotificationCenter.Current.SetBadgeCount
– Anger märkesantalet för appikonen i Springboard (inaktuell i iOS 16+ och tvOS 16+).
Lägga till alternativa ikoner i ett .NET-projekt
För att en app ska kunna växla till en alternativ ikon måste en ny .appiconset
mapp med en samling ikonbilder inkluderas i projektets tillgångskatalog:
Öppna projektets tillgångskatalog (Assets.xcassets) i Finder:
Skapa en kopia av den befintliga
AppIcon.appiconset
mappen:Ersätt varje ikon i den kopierade mappen med den nya ikonen med matchande storlek:
Lägg till appikonen i projektfilen med egenskapen
AppIcon
:<PropertyGroup> <AppIcon>AppIcon</AppIcon> </PropertyGroup>
Anteckning
Befintliga projekt anger vanligtvis appikonen med hjälp av
XSAppIconAssets
-nyckeln iInfo.plist
-filen – detta kan fortfarande användas, men vi rekommenderar att du växlar till egenskapenAppIcon
i projektfilen i stället (vilket också är förenklat eftersom dess värde är namnet på ikonen, inte sökvägen till resursen).Lägg till de alternativa ikonerna i projektfilen med hjälp av
AlternativeAppIcons
objektgrupp:<ItemGroup> <AlternativeAppIcon Include="AlternativeAppIcons" /> </ItemGroup>
Hantera appens ikon
Med de ikonbilder som ingår i .NET-projektet kan utvecklaren styra appens ikon på följande sätt.
Med egenskapen SupportsAlternateIcons för klassen UIApplication kan utvecklaren se om en app stöder alternativa ikoner. Till exempel:
// Can the app select a different icon?
primaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
alternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
Egenskapen ApplicationIconBadgeNumber för klassen UIApplication gör att utvecklaren kan hämta eller ange det aktuella märkesnumret för appikonen i Springboard. Standardvärdet är noll (0). Till exempel:
// 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 ())}");
}
Not
UNUserNotificationCenter.SetBadgeCount
kräver auktorisering från användaren på iOS, vilket kan hämtas genom att anropa UNUserNotificationCenter.Current.RequestAuthorization
innan du anger antalet märken.
Med egenskapen AlternateIconName för klassen UIApplication kan utvecklaren hämta namnet på den alternativa appikonen eller returnerar null
om appen använder den primära ikonen. Till exempel:
// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;
if (name != null ) {
// Do something with the name
}
Med egenskapen SetAlternameIconName för klassen UIApplication kan utvecklaren ändra appikonen. Skicka namnet på ikonen för att välja eller null
för att återgå till den primära ikonen. Till exempel:
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 ())}");
});
}
När appen körs och användaren väljer en alternativ ikon visas en avisering som följande:
Om användaren växlar tillbaka till den primära ikonen visas en avisering som följande: