Qual è il modo corretto aggiungere un protocollo di macOS info.plist utilizzando elettrone-builder?

0

Domanda

Ho bisogno di essere in grado di lanciare il mio Elettrone app dal browser (come segno di Allentamento fa). So che posso aggiungere il mio nome di protocollo per il mio Elettrone app tramite app.setAsDefaultProtocolClient(protocollo[, percorso, args]) in Elettroni.

Quindi in elettrone-builder, posso usare il pacchetto.json config build.mac con il extendInfo proprietà per definire "Le voci extra per Info.plist". Questo, però, è il solo istruzioni docs dare su come usarlo.

Qual è il modo corretto aggiungere un protocollo di macOS info.plist utilizzando elettrone ed elettrone-generatore di config build.mac.extendInfo e di essere in grado di utilizzare come descritto?

2

Migliore risposta

0

(Pubblicato una soluzione sul conto dell'autore questione, per spostare la risposta di spazio).

Ora funziona con i seguenti - ho aggiunto al mio pacchetto di Elettroni.json:

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

Ho questo in electron.js:

app.setAsDefaultProtocolClient('my-app');

E questo nel mio Reagire browser client di codice dell'applicazione per avviare l'applicazione dal browser:

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

Questa domanda si riferisce a come schemi personalizzati vengono utilizzati per ricevere OAuth risposte, come nel mio esempio di codice che è possibile eseguire in locale, quindi utilizzare il deep linking, ecc:

Punti di interesse:

  • Un interstiziale pagina web restituisce il controllo al browser app - vedere questa pagina
  • Il mio pacchetto.json espone lo schema per la distribuzione di Elettroni

Questo dovrebbe dare qualcosa da confrontare. Ecco il codice:

INTERSTIZIALE PAGINA WEB INVOCANDO APP

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;
    };
}

LA REGISTRAZIONE DEL REGIME

Questo viene raccolto dall'Elettrone packager e incluso nella piattaforma di file binari specifici, con conseguente specifiche del sistema operativo di registrazione:

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

LA RICEZIONE DELLE NOTIFICHE

Questo consente il codice riportato di seguito per lavorare nel lato principale della app, come specificato nel main.ts file:

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

Infine si registra un callback che l'URL di analizzare e prendere ciò che è l'azione appropriata - il completamento di un account di accesso nel mio caso.

private _receiveNotificationInRunningInstance(privateSchemeUrl: string) {
}

La meccanica è un po ' difficile e la notifica è stata ricevuta in modo diverso su macOS per Windows / Linux. Vedere questo file di origine e i suoi commenti, il che spiega i dettagli.

2021-12-10 21:27:59

Ciao @Gary Arciere, grazie mille per questa risposta, torno qui una volta ho avuto il tempo di scavare in tutti i link che ci hai fornito!
Mr. Robot

Questo aspetto è molto utile, ma è del tutto un "link solo rispondere". Potrebbe portare alcuni dei contenuti in esso, in modo che qualsiasi link rottura non influisce?
halfer

Grazie per le modifiche Gary - molto utile. (Minori di feedback - c'è una voce in stile, è possibile utilizzare in Markdown, che danno semantica strutturale/informazioni per i motori di ricerca e lettori di schermo: utilizzare --- sotto il titolo del testo).
halfer

Grazie halfer - feedback sempre i benvenuti ...
Gary Archer

In altre lingue

Questa pagina è in altre lingue

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