El archivo Manifiesto | PWA Experts I/O

El archivo Manifiesto

Veamos en este artículo cómo crear un elemento clave dentro del desarrollo de aplicaciones web progresivas: el archivo Manifiesto.

GIF

Un punto clave al momento de crear una PWA es la integración del archivo manifiesto, conocido también como Manifest File. El mismo posee una estructura de texto o pares clave-valor, basada en JSON, y su función principal es agrupar en ésta, una ser de datos a modo de configuración, que se relacionan directamente con la aplicación.

Quienes vienen de otros mundos del desarrollo, podrán encontrar al mismo como un proceso equivalente al desarrollo de aplicaciones Android: manifest.xml o a su equivalente en el ecosistema Java: manifest.mf. En el caso de las PWA, su nombre puede variar entre manifest.json o app.webmanifest. Cualquiera de estos es bienvenido.

imagen-01

En la imagen anterior, vemos cómo inspeccionar el contenido de un archivo manifiesto, a través de las Herramientas para el Desarrollador.

Navegador Web → DevTools → Application → Manifiest es la ruta para visualizarlo. Al llegar a esta ruta, podrás visualizar todas las propiedades definidas dentro de este archivo.

Beneficios de agregar un archivo manifiesto

El primero de todos es generar un camino de instalación de nuestras PWA en cualquiera de los sistemas operativos actuales: Windows, Linux, Mac OS, iOS, iPadOS y por supuesto: Android.

La mayoría de los navegadores ya le dan soporte a este archivo, de forma total o parcial. Puntualmente es Safari quien, hasta el momento de escribir esta publicación, solo le da un soporte parcial a este archivo.

Y si solemos utilizar Lighthouse integrado en las Herramientas para el Desarrollador o DevTools, veremos que esta herramienta nos “llama la atención" cuando no incluimos un archivo manifiesto en el proyecto web que estamos testeando.

imagen-02.png

Figura 02: estructura del archivo manifiesto. Como vemos, es contenido JSON puro.

Cómo construirlo

Dentro del proyecto web donde queremos integrar un archivo Manifiesto, debemos crear un nuevo archivo del tipo JSON, en la raiz del proyecto, al mismo nivel del documento index.html. Recordemos nombrar el archivo como manifest.json o web.appmanifest.

El paso siguiente es referenciarlo dentro de cada documento HTML que tenga nuestro proyecto. Puntualmente dentro del apartado "head", es donde debemos agregar la siguiente línea:


  <link rel="manifest" href="manifest.json">

Luego, dentro del archivo manifiesto, nos queda comenzar a armar la estructura del archivo en sí. Lo que haremos es compartirles una tabla con cada propiedad o clave, y su descripción. Más luego, un código de ejemplo de un archivo Manifiesto, más las referencias a otras guías del tema, para ampliar el material de éste.

Propiedad o ClaveDescripción de su valor
scopePunto raíz del sitio web. Usualmente se utiliza "/" que hace referencia a la carpeta que contiene el proyecto.
start_urlLa ruta “/route/” o archivo inicial de nuestro proyecto web. Este se debe respetar en todos los otros documentos HTML que referencian al Manifiesto, para que el usuario pueda agregar nuestro proyecto y que éste siempre inicie en la página principal correcta.
display

Muestra el comportamiento de la ventana contenedora de nuestra PWA. Sus valores pueden variar entre:

  • fullscreen
  • standalone
  • minimal-ui
  • Browser

Es bastante referencial el nombre de cada valor, acorde a cómo se verá la PWA al ejecutarse en el equipo móvil o de escritorio.

orientationLa orientación de la PWA en la pantalla. portrait o landscape sus valores aceptados, pero solo funcionan en dispositivos Android.
nameNombre de la PWA. Puede ser algo descriptivo aquí. Este nombre puede llegar a utilizarse como nombre de la PWA en computadoras de escritorio.
shortnameNombre de la PWA, lo más resumido posible, para ser utilizado puntualmente en pantallas de dispositivos móviles.
descriptionPor supuesto, una descripción más clara de la PWA, lo que hace y demás cuestiones.
iconsSoporta un array JSON con definición de íconos en diferentes tamaños. Dicho array debe llevar la ruta hacia el archivo de íconos, el tamaño de los mismos, el tipo de imagen y la propiedad purpose, donde ya hablamos de las máscaras que soportan dichos íconos, en este otro artículo.
background_color Define el color de fondo que tendrá la PWA. El color debe ser definido como hexadecimal.
theme_color Define el color del tema predeterminado de la PWA. Aquellos navegadores que lo soportan pueden cambiar el color de ventana y barra URL, acorde al que se indica en esta propiedad. El color debe ser definido como hexadecimal.

El orden de las propiedades puede variar sin afectar a nuestro proyecto.

Existen otras tantas propiedades más, pero con estas definidas en el archivo manifiesto, tu PWA funcionará de forma óptima. Dejamos las propiedades más avanzadas y otras tantas que están aún en implementación, para una próxima publicación.

Ejemplo de archivo Manifiesto

Veamos a continuación un bloque de código con el ejemplo de cada propiedad mencionada:


  { 
    “short_name": “PWAManifest",  
    “name": “PWA Manifest",  
    “description": “Mi primer proyecto PWA",  
    “background_color": “#FFFFFF",  
    “theme_color": “#FFFFFF",  
    “orientation": “portrait",  
    “display": “standalone",  
    “icons":[
      {  
        “src": “icons/ru-512.png",  
        “type": “image/png",  
        “sizes": “512x512",  
        “purpose": “maskable"
      },
      {
        “src": “icons/ru-192.png",  
        “type": “image/png",  
        “sizes": “192x192", 
        “purpose": “maskable"  
      }
    ] 
  }

Con esto funcional, ya puedes probar de agregar tu proyecto web, al escritorio de tu computadora o móvil.

imagen-03.gif

A tener en cuenta

La propiedad orientation como icons, no funcionan en Mac OS Safari ni en el ecosistema iOS, iPadOS de Apple. Para esto último, debes agregar los "meta-tag-icon" en los documentos HTML, como lo explicamos hace un tiempo en este otro tutorial.

En Mac OS Safari tampoco hay posibilidad de agregarlo al escritorio del S.O. Solo se dispone de esta propiedad en iOS y/o iPadOS.

Si integras el archivo manifiesto con Service Worker, éste funcionará mucho mejor todavía. Recuerda que nuestro artículo sobre Workbox incluye referencia a los fundamentos de Service Worker, como también nuestro tutorial de Cache Storage.

¡Gracias por leernos!

#JavaScript#PWA#Features

Para dejar tu comentarios debes pertenecer a la Comunidad.

Entra en la Comunidad

¿Quieres aprender sobre las PWAs, colaborar en el desarrollo de la plataforma, redactar artículos, publicar tutoriales y mucho más? Únete a la Comunidad PWA Experts I/O.

WIP: Work in Progress

Estas son las próximas mejoras que presentaremos en la Comunidad, ¿te apetece colaborar?

  • 🔚 Incluir resumen de los features de las PWA por navegador.
  • 🔚 Agregar avisos vía email con las respuestas en los hilos del foro.
  • 🔜 Implementación del Service Workers.
  • 🔜 Newsletters.