Iconos de aplicación alternativos en .NET para iOS y tvOS
Apple tiene varias API UIApplication que permiten a una aplicación administrar su icono:
-
UIApplication.SupportsAlternateIcons: si
true
la aplicación tiene un conjunto alternativo de iconos. -
UIApplication.AlternateIconName: devuelve el nombre del icono alternativo seleccionado actualmente o
null
si se usa el icono principal. - UIApplication.SetAlternateIconName: use este método para cambiar el icono de la aplicación al icono alternativo especificado.
-
UNUserNotificationCenter.Current.SetBadgeCount
: establece el recuento de distintivos del icono de la aplicación en Springboard (en desuso en iOS 16+ y tvOS 16+).
Adición de iconos alternativos a un proyecto de .NET
Para permitir que una aplicación cambie a un icono alternativo, deberá incluirse una nueva carpeta .appiconset
con una colección de imágenes de icono en el catálogo de recursos del proyecto:
Abra el catálogo de recursos del proyecto (Assets.xcassets) en Finder:
Cree una copia de la carpeta
AppIcon.appiconset
existente:copiar carpeta appiconset
Reemplace cada icono de la carpeta copiada por el nuevo icono del tamaño coincidente:
Agregue el icono de la aplicación al archivo del proyecto mediante la propiedad
AppIcon
:<PropertyGroup> <AppIcon>AppIcon</AppIcon> </PropertyGroup>
Nota
Normalmente, los proyectos existentes especifican el icono de la aplicación con la clave
XSAppIconAssets
en el archivoInfo.plist
; esto todavía se puede usar, pero se recomienda cambiar a la propiedadAppIcon
en el archivo del proyecto (que también es más simple, porque su valor es el nombre del icono, no la ruta de acceso al recurso).Agregue los iconos alternativos al archivo de proyecto mediante el grupo de elementos
AlternativeAppIcons
:<ItemGroup> <AlternativeAppIcon Include="AlternativeAppIcons" /> </ItemGroup>
Administrar el icono de la aplicación
Con las imágenes de icono incluidas en el proyecto de .NET, el desarrollador puede controlar el icono de la aplicación de las siguientes maneras.
La propiedad SupportsAlternateIcons de la clase UIApplication permite al desarrollador ver si una aplicación admite iconos alternativos. Por ejemplo:
// Can the app select a different icon?
primaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
alternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
La propiedad ApplicationIconBadgeNumber de la clase UIApplication permite al desarrollador obtener o establecer el número de distintivo actual del icono de la aplicación en Springboard. El valor predeterminado es cero (0). Por ejemplo:
// 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 ())}");
}
Nota
UNUserNotificationCenter.SetBadgeCount
requiere autorización del usuario en iOS, que se puede adquirir llamando a UNUserNotificationCenter.Current.RequestAuthorization
antes de establecer el recuento de distintivos.
La propiedad AlternateIconName de la clase UIApplication permite al desarrollador obtener el nombre del icono de aplicación alternativo seleccionado actualmente o devuelve null
si la aplicación usa el icono principal. Por ejemplo:
// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;
if (name != null ) {
// Do something with the name
}
La propiedad null
para volver al icono principal. Por ejemplo:
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 ())}");
});
}
Cuando se ejecuta la aplicación y el usuario selecciona un icono alternativo, se mostrará una alerta como la siguiente:
Si el usuario vuelve al icono principal, se mostrará una alerta como la siguiente:
Consulte también
- de ejemplo de iOS
- ejemplo de tvOS