Saltar al contenido

Repartir por plataforma

La misma aplicación necesita cosas distintas en escritorio y en móvil. Cómo se declara, qué se gana además de la superficie, y el fallo que solo aparece al compilar para el segundo sistema.

Declararlo

JSON
{  "identifier": "escritorio",  "description": "Lo que solo tiene sentido con teclado, ficheros y procesos",  "windows": ["main"],  "platforms": ["macOS", "windows", "linux"],  "permissions": ["global-shortcut:allow-register", "shell:allow-open"]}
JSON
{  "identifier": "movil",  "description": "Lo que solo existe en un teléfono",  "windows": ["main"],  "platforms": ["iOS", "android"],  "permissions": ["haptics:allow-vibrate", "barcode-scanner:allow-scan"]}

Los cinco valores son los tres de escritorio y los dos de móvil. Omitir el campo significa las cinco.

Qué se gana

El cuarto es el que de verdad importa. Sin este campo, cada permiso que alguien añade para resolver algo en una plataforma queda concedido en las cinco, para siempre, y nadie lo recorta después.

Permisos que solo existen en un sistema

Algunos plugins solo tienen sentido en unas plataformas, y ahí el campo pasa de útil a necesario para que la configuración se entienda:

solo escritorio solo móvil
atajos globales vibración
bandeja del sistema lector de códigos
ejecutar procesos y sidecars notificaciones push
menús nativos de aplicación orientación y sensores
instancia única compartir con otras apps

Y algunos existen en las cinco con comportamientos distintos —diálogos, ficheros, notificaciones— y ahí el campo no hace falta pero el ámbito sí cambia, porque las rutas de móvil no son las de escritorio. Nivel 30.

El fallo de la segunda plataforma

Es el síntoma característico y aparece siempre igual: la aplicación funciona en el sistema donde desarrollas y falla con un error de permisos en el otro. Es la tercera causa del nivel 27.5.

Dos formas de que ocurra:

Declaraste plataformas y te dejaste una. El caso benigno: el mensaje dice qué permiso falta, se añade la plataforma y listo.

El permiso no existe en esa plataforma. El caso que enseña algo: intentas conceder atajos globales en Android y no hay tal permiso. Eso no compila —la comprobación del nivel 27.3, paso 4— y el error dice que el identificador no existe. La corrección no es buscar un equivalente: es que esa funcionalidad no existe ahí y la aplicación tiene que comportarse distinto. Fase XIII.