Uso de un manifiesto de aplicación web para integrar un PWA en el sistema operativo

Una aplicación web progresiva (PWA) debe tener un manifiesto de aplicación web para definir cómo se integra la PWA con el sistema operativo (SO). En este artículo se explica qué es un manifiesto de aplicación web y qué datos obligatorios y opcionales contiene un manifiesto de aplicación web.

El archivo de manifiesto de aplicación web rige el aspecto y comportamiento de la PWA cuando se instala en un dispositivo. El manifiesto de aplicación web proporciona información como el nombre de la aplicación, la ubicación del archivo de los iconos que representan la aplicación en los menús del sistema y los colores del tema que usa el sistema operativo en la barra de título.

Un manifiesto de aplicación web es un archivo JSON al que se debe hacer referencia desde la página HTML del sitio web mediante un vínculo de manifiesto. Inserte el código siguiente entre las etiquetas y </head> de la <head> página HTML del sitio web para vincularlo al archivo de manifiesto:

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

Tipo de archivo de manifiesto de aplicación web

El contenido del manifiesto de la aplicación web debe ser JSON válido, pero la extensión de archivo puede ser o .json.webmanifest.

Si decide usar la .webmanifest extensión, compruebe que el servidor HTTP la atiende con el application/manifest+json tipo MIME.

Miembros del manifiesto

Como mínimo, un archivo de manifiesto debe contener los siguientes miembros de manifiesto:

{
    "name": "My Sample PWA",
    "lang": "en-US",
    "start_url": "/"
}

A continuación se muestra un ejemplo de un archivo de manifiesto que contiene más miembros:

{
    "name": "My Sample PWA",
    "lang": "en-us",
    "short_name": "SamplePWA",
    "description": "A sample PWA for testing purposes",
    "start_url": "/",
    "scope": "/",
    "display": "standalone",
    "theme_color": "#2f3d58",
    "background_color": "#2f3d58",
    "orientation": "any",
    "icons": [
        {
            "src": "/icon512.png",
            "sizes": "512x512"
        }
    ]
}

Un PWA se puede personalizar aún más mediante otros miembros del manifiesto, como los siguientes:

Member Descripción
name Nombre de la aplicación, que usa el sistema operativo para mostrarse junto al icono de la aplicación.
short_name Esto se puede usar para mostrar el nombre de la aplicación cuando no hay suficiente espacio para name.
description Descripción de la aplicación.
categories Lista de categorías a las que pertenece la aplicación.
icons Matriz de objetos de imagen de icono que usa el sistema operativo en contextos diferentes.
screenshots Matriz de objetos de imagen de captura de pantalla, que también usa el sistema operativo en contextos diferentes.
start_url Dirección URL preferida a la que se debe navegar cuando el sistema operativo inicia la aplicación.
scope Define el ámbito de navegación de la aplicación. Fuera de este ámbito, la página visitada se revierte a una página web normal, no a una PWA. Este valor predeterminado es start_url.
display Qué aspecto debe tener la aplicación. Esto cambia la cantidad de la interfaz de usuario del explorador que se muestra al usuario.
display_override Se usa para determinar la pantalla preferida para la aplicación, en función de lo que admita el dispositivo.
theme_color Color de tema predeterminado para la aplicación. Esto afecta al modo en que el sistema operativo muestra el sitio.
background_color Color de fondo de la ventana donde se inicia la aplicación, antes de aplicar la hoja de estilos.
orientation En los dispositivos compatibles, esto define la orientación predeterminada de la aplicación (por ejemplo, horizontal o vertical).
protocol_handlers Lista de esquemas de protocolo URI predefinidos o personalizados a los que está asociada la aplicación.
shortcuts La lista de tareas comunes que los usuarios podrán realizar haciendo clic con el botón derecho o presionando durante mucho tiempo en el icono de la aplicación.
share_target Tipo de datos que la aplicación acepta cuando el contenido se comparte a través del cuadro de diálogo recurso compartido del sistema operativo.
file_handlers Tipo de archivos con los que se puede iniciar la aplicación.

Para más información sobre los miembros del manifiesto, consulte manifiestos de aplicaciones web en MDN.

Controlar esquemas de protocolo específicos

Puede registrar el PWA como controlador de protocolo. Cuando un usuario hace clic en un vínculo que usa el esquema de protocolo en el que se registró la aplicación, la aplicación se inicia automáticamente. Esto permite a los usuarios compartir fácilmente vínculos a partes específicas o funciones de la aplicación entre sí.

Para registrarse como controlador de protocolo, use el miembro de protocol_handlers manifiesto:

{
    "protocol_handlers": [
        {
            "protocol": "mailto",
            "url": "/newEmail?to=%s"
        }
    ]
}

Para obtener más información, consulte Control de protocolos en Aplicaciones web progresivas.

Uso de accesos directos para proporcionar acceso rápido a las características

La mayoría de los sistemas operativos proporcionan acceso rápido a las características clave de la aplicación mediante accesos directos en el menú contextual que está conectado al icono de la aplicación. Para usar accesos directos en la PWA, incluya el miembro en el shortcuts manifiesto de la aplicación web.

En el código siguiente se muestra cómo definir un acceso directo en un manifiesto de aplicación web.

"shortcuts": [
    {
        "name": "Play Later",
        "description": "View the list of podcasts you saved for later",
        "url": "/play-later",
        "icons": [
            {
                "src": "/icons/play-later.svg",
                "type": "image/svg+xml",
                "purpose": "any"
            }
        ]
    },
    {
        "name": "Subscriptions",
        "description": "View the list of podcasts available in your subscription",
        "url": "/subscriptions?sort=desc"
    }
]

Para más información, consulte Definición de accesos directos de aplicaciones.

Identificación de la aplicación como destino de recurso compartido

Para permitir que los usuarios compartan rápidamente vínculos y archivos con aplicaciones nativas, use el share_target objeto en el manifiesto de aplicación web. Una action página es similar a un formulario. En el share_target objeto , defina la action página y los parámetros que espera que se pasen a la action página.

"share_target": {
    "action": "/share.html",
    "params": {
        "title": "name",
        "text": "description",
        "url": "link"
    }
}

El objeto anterior share_target se establece /share.html como la action página de un recurso compartido. En este ejemplo también se definen tres parámetros que se pasarían a esa action página: title, texty url.

Para más información sobre el uso de la característica Compartir destino, consulte Uso compartido de contenido con otras aplicaciones.

Asociación de la aplicación con archivos

Cuando un PWA se registra como controlador de archivos para determinados tipos de archivos, el sistema operativo puede iniciar automáticamente la aplicación cuando el usuario abre esos archivos, de forma similar a cómo Microsoft Word controla .docx los archivos. Los PWA que controlan archivos se sienten más nativos para los usuarios y se integran mejor en el sistema operativo.

Para controlar los archivos, enumere los tipos mime de archivo y las extensiones con las que desea asociar la aplicación y defina la dirección URL con la que se debe iniciar la aplicación:

{
    "file_handlers": [
        {
            "action": "/openFile",
            "accept": {
                "text/*": [
                    ".txt"
                ]
            }
        }
    ]
}

A continuación, controle los archivos mediante el window.launchQueue() método :

if ('launchQueue' in window) {
    launchQueue.setConsumer(launchParams => {
        // Do something with launchParams.files ...
    });
}

Para más información, consulte Control de archivos en Aplicaciones web progresivas.