Cómo aplicar iconos alternativos a tu app
Misael Cuevas
15 noviembre, 20232min de lectura
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:
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.
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 intry await UIApplication.shared.setAlternateIconName("AppIcon-2")}
Para volver al icono por defecto, utiliza nil
en el parámetro alternateIconName
:
Task { @MainActor intry await UIApplication.shared.setAlternateIconName(nil)}
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