Cómo aplicar iconos alternativos a tu app

Aplicar dinámicamente diferentes iconos a una app proporciona una experiencia más personalizada al usuario según sus preferencias o eventos específicos. Un ejemplo práctico son las apps de Duolingo o Reddit, que permiten al usuario elegir un icono diferente según las acciones que haya realizado:

Para lograrlo, primero debes agregar varios iconos de la app dentro de tu catálogo de activos, por ejemplo:

Iconos de la app

En este GIF, he agregado tres iconos para mi app con los nombres de AppIcon, AppIcon-2, AppIcon-3.

Una vez hecho esto, necesitas especificar cuáles serán tus iconos alternativos. Sigue estos pasos:

  • Selecciona tu proyecto en el project navigator.
  • Selecciona el target de tu app.
  • Dirígete la pestaña de Build Settings.
  • Buscar Alternate App Icon Sets en el buscador. Verás que esta opción aparece dentro del grupo Asset Catalog Compiler - Options.
  • Agrega los nombres de tus iconos alternativos en esta opción.
Opción Alternate App Icon Sets en Xcode

En esta imagen, he definido que mis iconos alternativos son AppIcon-2 y AppIcon-3. No es necesario agregar AppIcon porque ya está definido como el icono por defecto en la pestaña General de la configuración del target de la app.

Con esto configurado, estás listo para cambiar el icono de tu app utilizando la función setAlternateIconName de la clase UIApplication:

func setAlternateIconName(_ alternateIconName: String?) async throws

O su versión síncrona:

func setAlternateIconName(
_ alternateIconName: String?,
completionHandler: ((Error?) -> Void)? = nil
)

Donde alternateIconName es el nombre del icono que deseas establecer, y completionHandler retorna el resultado de dicha acción. Aquí tienes un ejemplo de cómo cambiar a un icono alternativo:

Task { @MainActor in
try await UIApplication.shared.setAlternateIconName("AppIcon-2")
}
Utilizando la función setAlternateIconName de la clase UIApplication

Para volver al icono por defecto, utiliza nil en el parámetro alternateIconName:

Task { @MainActor in
try await UIApplication.shared.setAlternateIconName(nil)
}
Utilizando la función setAlternateIconName de la clase UIApplication para volver a utilizar el icono por defecto

Si deseas conocer el nombre del icono alternativo que está utilizando la app, utiliza la propiedad alternateIconName:

UIApplication.shared.alternateIconName

Además, para saber si la app permite cambiar el icono principal por uno alternativo, utiliza la propiedad supportsAlternateIcons:

UIApplication.shared.supportsAlternateIcons

Comparte este artículo

Subscríbete a nuestro Newsletter

Mantente al día en el mundo de las aplicaciones móviles con nuestro blog especializado.

Artículos semanales

Todas las semanas artículos nuevos sobre el mundo de las aplicaciones móviles.

No spam

No te enviaremos spam, solo contenido de calidad. Puedes darte de baja cuando quieras.

Contenido de calidad

Nada de contenido generado de manera automática usando ChatGPT.

Recomendaciones

Tips indispensables sobre mejores prácticas y metodologías.

© 2024 AsyncLearn