¿Cuál es la forma correcta de agregar un protocolo para el macOS info.plist usando electrónica-constructor?

0

Pregunta

Necesito ser capaz de lanzar mi Electrones de la aplicación desde el navegador (como iniciar sesión en la Holgura que hace). Sé que puedo agregar mi nombre de protocolo a mi Electrones de la aplicación a través de la aplicación.setAsDefaultProtocolClient(protocolo[, camino, args]) de Electrones.

A continuación, en electrón-generador, puedo usar el paquete.json config build.mac con el extendInfo propiedad para definir "Las entradas adicionales de Información.plist". Esto, sin embargo, es el único instrucciones de la documentación de dar sobre cómo utilizarlo.

¿Cuál es la forma correcta de agregar un protocolo para el macOS info.plist utilizando electrón y electrón-generador de config build.mac.extendInfo y ser capaz de utilizar como se describe?

2

Mejor respuesta

0

(Publicado una solución en nombre de la pregunta que el autor de mover el espacio de respuesta).

Ahora funciona con los siguientes - he añadido esto a mi Electrones paquete.json:

        "protocols": {
            "name": "my-app",
            "schemes": [
                "my-app"
            ]
        },
        "mac": {
            "target": "dmg",
            "extendInfo": "my-app"
        },

Tengo esto en el electron.js:

app.setAsDefaultProtocolClient('my-app');

Y esta en mi Reaccionan cliente de navegador de código de la aplicación para iniciar la aplicación desde el navegador:

document.location = 'my-app://open?url='
2021-12-10 08:45:43
0

Esta pregunta se refiere a cómo personalizados se utilizan sistemas de recibir OAuth respuestas, como en mi ejemplo de código que puede ejecutar localmente, a continuación, utilice los enlaces profundos etc:

Puntos de interés:

  • Una intersticial página web devuelve el control a la aplicación navegador - ver esta página
  • Mi paquete.json expone el esquema para la implementación de Electrones

Esto te dará algo para comparar. Aquí está el código:

INTERSTICIAL DE LA PÁGINA WEB DE LA INVOCACIÓN DE LA APLICACIÓN

window.addEventListener('DOMContentLoaded', function() {

    var redirectUri = 'x-mycompany-desktopapp:/callback';
    if (window.location.search) {
        redirectUri += window.location.search;
    }

    document.getElementById('continueButton').onclick = function() {
        window.location.href = redirectUri;
    };
}

REGISTRAR EL ESQUEMA DE

Este obtiene recogido por el Electrón empaquetador y se incluye en la plataforma específica de los binarios, lo que resulta en OS específicos de registro:

"build": {
    "protocols": {
      "name": "finaldesktopapp",
      "schemes": [
        "x-mycompany-desktopapp"
      ]
    }
  },

RECIBIR NOTIFICACIONES

Esto permite que el código siguiente para trabajar en el lado principal de la aplicación, como se especifica en el main.ts archivo:

app.setAsDefaultProtocolClient(this._configuration.oauth.privateSchemeName);

Finalmente registrar una devolución de llamada que se puede analizar la dirección URL y tomar lo que es la acción apropiada - completando un inicio de sesión en mi caso.

private _receiveNotificationInRunningInstance(privateSchemeUrl: string) {
}

La mecánica es un poco complicado y la notificación es recibida de manera diferente en macOS para Windows / Linux. Ver este archivo de origen y sus comentarios que explican los detalles.

2021-12-10 21:27:59

Hola @Gary Arquero, muchas gracias por esta respuesta, voy a volver aquí una vez he tenido tiempo de profundizar en todos los enlaces que he proporcionado!
Mr. Robot

Esto se ve muy útil, pero es totalmente un "vínculo única respuesta". Puedes traer algunos de los contenidos en ella, de modo que cualquier enlace de rotura no la afecta?
halfer

Gracias por las ediciones Gary - muy útil. (Menores de retroalimentación - no es un estilo de encabezado puede utilizar en las Rebajas que dar semántica estructural, la información a los motores de búsqueda y lectores de pantalla: utilice --- bajo el título de texto).
halfer

Gracias halfer - comentarios siempre bienvenidos ...
Gary Archer

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................