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
{ "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"]}{ "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.