Compartir a través de


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+).

Una alerta de ejemplo cuando una aplicación cambia su icono

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:

  1. Abra el catálogo de recursos del proyecto (Assets.xcassets) en Finder:

    Abrir el catálogo de recursos

  2. Cree una copia de la carpeta AppIcon.appiconset existente:

    copiar carpeta appiconset

  3. Reemplace cada icono de la carpeta copiada por el nuevo icono del tamaño coincidente:

    Crear nuevos iconos

  4. 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 archivo Info.plist; esto todavía se puede usar, pero se recomienda cambiar a la propiedad AppIcon 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).

  5. 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 SetAlternameIconName de la clase UIApplication permite al desarrollador cambiar el icono de la aplicación. Pase el nombre del icono para seleccionar o 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:

Una alerta de ejemplo cuando una aplicación cambia su icono

Si el usuario vuelve al icono principal, se mostrará una alerta como la siguiente:

Una alerta de ejemplo cuando una aplicación cambia al icono principal

Consulte también