Co je správný způsob, jak přidat protokol k macOS info.plist pomocí elektron-builder?

0

Otázka

Musím být schopen zahájit svou Elektron aplikace z prohlížeče (jako znamení v Slack má). Vím, že se mohu přidat můj protokol jméno do mého Elektron aplikace pomocí aplikace.setAsDefaultProtocolClient(protokol[, path, args]) v Elektron.

Pak v elektron-builder, mohu použít balíček.json config build.mac s extendInfo vlastnost definovat "další položky pro Info.plist". To však je jediná instrukce, dokumenty dát, jak ji používat.

Co je správný způsob, jak přidat protokol k macOS info.plist pomocí elektronové a elektron-builder config build.mac.extendInfo a být schopni používat, jak je popsáno?

2

Nejlepší odpověď

0

(Publikováno řešení jménem otázku autor přesunout na odpověď prostoru).

To nyní pracuje s následující - jsem přidal to do mého Elektronového obalu.json:

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

Mám to v electron.js:

app.setAsDefaultProtocolClient('my-app');

A to v mém Reagovat prohlížeče klienta app kód pro spuštění aplikace z prohlížeče:

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

Tato otázka se týká jak vlastní systémy se používají pro příjem OAuth reakce, jako v mém ukázkový kód, který lze spustit lokálně, pak použijte hluboké propojení atd.:

Body zájmu:

  • Intersticiální webové stránky vrátí řízení do prohlížeče aplikace - viz tato stránka
  • Můj balíček.json vystavuje systému pro Elektron nasazení

To by mělo dát vám něco k porovnání proti. Tady je kód:

INTERSTICIÁLNÍ WEBOVÉ STRÁNKY VYVOLÁNÍ APLIKACE

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

REGISTRACE REŽIM

To dostane zvedl Elektron balírny a součástí platformy specifické binární soubory, což v konkrétní OS. registrace:

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

PŘIJÍMÁNÍ OZNÁMENÍ

To umožňuje následující kód pracovat na hlavní straně aplikace, jak je uvedeno v main.ts soubor:

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

Konečně si zaregistrovat callback, který může analyzovat URL a vše, co je příslušné opatření - dokončení přihlášení v mém případě.

private _receiveNotificationInRunningInstance(privateSchemeUrl: string) {
}

Mechaniky jsou trochu složitější a oznámení obdržel, jinak na macOS na Windows / Linux. Viz tento zdrojový soubor a jeho komentáře, které vysvětlují detaily.

2021-12-10 21:27:59

Ahoj @Gary Archer, díky moc za odpověď, já se sem vrátím, až budu mít čas kopat na všechny odkazy, které jste poskytli!
Mr. Robot

Vypadá to velmi užitečné, ale to je zcela "odkaz pouze odpověď". Můžeš přivést obsah do něj tak, že každý odkaz, poškození nemá vliv na to?
halfer

Díky za úpravy, Gary - velmi užitečné. (Menší zpětná vazba - tam je styl nadpis můžete použít v Markdown, které poskytují sémantické/strukturální informace pro vyhledávače a displeje-čtečky: pomocí --- pod nadpisem text).
halfer

Díky halfer - zpětná vazba vždy vítány ...
Gary Archer

V jiných jazycích

Tato stránka je v jiných jazycích

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