Saltar al contenido

Installable Apps

Abrir en ChatGPT
24.21
Java API

La anotación @AppProfile en webforJ te permite hacer que tu aplicación sea instalable en plataformas compatibles. Las aplicaciones web instalables se integran sin problemas con el sistema operativo del dispositivo. Cuando están instaladas, aparecen en la pantalla de inicio o en el menú de aplicaciones, similar a las aplicaciones nativas. Para lograr esto, se debe proporcionar cierta metadata como nombre, descripción e íconos. Estos detalles ayudan al sistema operativo a identificar y mostrar la aplicación.

Requisito de Origen Seguro

Para que una aplicación sea instalable, debe ser servida desde un origen seguro, como https. Este requisito asegura que la aplicación cumpla con los estándares de seguridad necesarios para la instalación. Sin embargo, esta regla no se aplica al servir la aplicación localmente desde localhost durante el desarrollo.

Para más detalles sobre contextos seguros y su importancia, consulta la documentación de Contextos Seguros de MDN.

Anotación @AppProfile

La anotación @AppProfile se aplica a la clase principal de la aplicación y requiere una configuración mínima. Como mínimo, necesitas proporcionar:

  • name: El nombre completo de la aplicación.
  • shortName: Una versión concisa del nombre para usar en contextos de espacio limitado.

Las propiedades adicionales opcionales permiten personalizar la apariencia y el comportamiento de la aplicación.

Cuando la anotación @AppProfile está presente, webforJ:

  • Configura automáticamente las etiquetas meta necesarias.
  • Genera un Manifiesto de Aplicación Web.
  • Sirve recursos relacionados como íconos y capturas de pantalla.

Ejemplo: Aplicando @AppProfile

@AppProfile(
name = "Zyntric Bank",
shortName = "ZBank",
description = "Zyntric Bank es una aplicación bancaria simple construida con webforJ",
screenshots = {
@AppProfile.Screenshot(
src = "ws://img/screenshots/s1.jpg",
sizes = "1080x1920"
)
}
)
public class Application extends App {
}

Propiedades de @AppProfile

La siguiente tabla enumera todas las propiedades soportadas por la anotación @AppProfile:

PropiedadTipoDescripciónValor Por Defecto
nameStringEl nombre completo de la aplicación, mostrado en menús de aplicaciones y cuadros de diálogo de instalación.Obligatorio
shortNameStringUna versión corta del nombre, utilizada en contextos con espacio limitado. No debe exceder 12 caracteres.Obligatorio
descriptionStringUna breve descripción de la aplicación, mostrada durante la instalación y en la configuración de la aplicación.""
themeColorStringEl color del tema para la aplicación, aplicado a la interfaz del navegador cuando se lanza la aplicación."#ffffff"
backgroundColorStringEl color de fondo inicial para la aplicación durante la carga."#f8fafc"
startUrlStringLa URL que se abrirá cuando se lance la aplicación."."
displayDisplay EnumEl modo de visualización de la aplicación (p. ej., FULLSCREEN, STANDALONE, BROWSER).STANDALONE
orientationOrientation EnumLa orientación predeterminada de la aplicación (p. ej., PORTRAIT, LANDSCAPE, NATURAL).NATURAL
iconsIcon[]Un array de íconos que representan la aplicación en diferentes resoluciones.[]
defaultIconDefaultIconEspecifica un ícono predeterminado para la aplicación. Genera automáticamente rutas de íconos en múltiples tamaños si está configurado.icons://icon.png
screenshotsScreenshot[]Un array de capturas de pantalla para la aplicación, utilizadas en cuadros de diálogo de instalación.[]
categoriesString[]Categorías para clasificar la aplicación (p. ej., Finanzas, Compras).[]

Propiedades de @AppProfile.Icon

Los íconos definen la representación visual de tu aplicación en los menús y pantallas de inicio. La anotación @AppProfile.Icon soporta las siguientes propiedades:

PropiedadTipoDescripciónValor Por Defecto
srcStringLa ruta al ícono. Esto puede ser una URL absoluta, o una ruta ws://.Obligatorio
sizesStringUna cadena que especifica uno o más tamaños de la imagen en el formato AnchoxAlto (p. ej., 512x512).Obligatorio
typeStringEl tipo MIME del ícono (p. ej., image/png, image/jpeg). Si no se proporciona, se detectará.""
purposeStringEl propósito del ícono (p. ej., any, maskable, monochrome).""

Ejemplo

@AppProfile.Icon(
src = "ws://icons/icon-512x512.png",
sizes = "512x512",
type = "image/png"
)

Propiedades de @AppProfile.DefaultIcon

La anotación DefaultIcon simplifica la configuración de los íconos de la aplicación generando múltiples variantes de tamaño a partir de un ícono base. Esto es particularmente útil para asegurar la compatibilidad en dispositivos con distintas resoluciones.

PropiedadTipoDescripciónValor Por Defecto
valueStringLa ruta al archivo del ícono base. Esto puede ser una URL absoluta, o una ruta ws://.Obligatorio
sizesint[]Un array de tamaños a generar, especificados como enteros (p. ej., {144, 192, 512}).{144, 192, 512}
Requisitos del Archivo del Ícono

Esta configuración no genera automáticamente los archivos de ícono reales para la aplicación. En su lugar, utiliza la anotación @AppProfile.DefaultIcon para generar las entradas correspondientes de @AppProfile.Icon para cada tamaño especificado.

Si usas el protocolo de servidor web

  • Debes proporcionar un archivo base icon.png en la carpeta static/icons.
  • Se espera que incluya variaciones adicionales de íconos nombradas icon-144x144.png, icon-192x192.png, y icon-512x512.png.
  • Estos tamaños específicos aseguran la compatibilidad con varios dispositivos y resoluciones.

Si usas el protocolo de íconos

  • Se espera que proporciones un archivo base icon.png en la carpeta /icons.
  • El endpoint icons proporciona dinámicamente diferentes tamaños de íconos bajo demanda cuando se solicitan.

Propiedades de @AppProfile.Screenshot

Las capturas de pantalla proporcionan una vista previa de la aplicación en cuadros de diálogo de instalación o tiendas de aplicaciones. La anotación @AppProfile.Screenshot soporta las siguientes propiedades:

PropiedadTipoDescripciónValor Por Defecto
srcStringLa ruta a la captura de pantalla. Esto puede ser una URL absoluta, o una ruta ws://.Obligatorio
sizesStringUna cadena que especifica uno o más tamaños de la imagen en el formato AnchoxAlto (p. ej., 1080x1920).Obligatorio
typeStringEl tipo MIME de la captura de pantalla (p. ej., image/png, image/jpeg). Si no se proporciona, se detectará""
labelStringUna etiqueta descriptiva para la captura de pantalla.""
formFactorStringEl factor de forma de la captura de pantalla (p. ej., narrow, wide).""
platformStringLa plataforma para la cual se destina la captura de pantalla (p. ej., ios, android).""

Ejemplo

@AppProfile.Screenshot(
src = "ws://img/screenshots/s1.jpg",
sizes = "1080x1920"
)