使用 Electron 從協議處理器啓動應用程序

使用 Electron 從協議處理器啓動應用程序

此係列文章的應用示例已發佈於 GitHub: electron-api-demos-Zh_CN. 能夠 Clone 或下載後運行查看. 歡迎 Star .html

app 模塊提供了處理協議的方法.git

這些方法容許您設置協議和取消協議, 來讓你的應用成爲默認的應用程序. 相似於當瀏覽器請求您查看網頁時的默認值.github

在瀏覽器中查看 完整 app API 文檔.shell

從其餘應用中的 URL 啓動應用

支持: Win, macOS | 進程: 主進程api

您能夠將應用設置爲針對特定協議打開的默認應用. 例如, 在這個示例中咱們將此應用程序設置爲 electron-api-demos:// 的默認值. 上面的示例按鈕將在默認瀏覽器中啓動一個帶有連接的頁面. 點擊那個連接,它將從新啓動此應用程序.瀏覽器

<a href="electron-api-demos://open"><h3>electron-api-demos://open</h3></a>

打包

這個功能只能在 macOS 上使用, 並且須要將應用打包. 若是你以開發模式從命令行啓動, 它將沒法使用.app

當您打包應用程序時, 您須要確保應用程序的 macOS plist 已更新爲包含新的協議處理器.electron

若是您使用 electron-packager, 那麼您能夠添加 --extend-info 標記,並在其中包含您建立的 plist. ui

當前程序用例以下:url

渲染器進程

const shell = require('electron').shell

const path = require('path')

const protocolHandlerBtn = document.getElementById('protocol-handler')

protocolHandlerBtn.addEventListener('click', function () {
  const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked')
  const pagePath = path.join('file://', pageDirectory, '../../sections/system/protocol-link.html')
  shell.openExternal(pagePath)
})

主進程

const app = require('electron').app
const dialog = require('electron').dialog

app.setAsDefaultProtocolClient('electron-api-demos')

app.on('open-url', function (event, url) {
  dialog.showErrorBox('歡迎回來', `你來自: ${url}`)
})

主進程

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleURLTypes</key>
  <array>
    <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>electron-api-demos</string>
      </array>
      <key>CFBundleURLName</key>
      <string>Electron API Demos Protocol</string>
    </dict>
  </array>
  <key>ElectronTeamID</key>
  <string>VEKTX9H2N7</string>
</dict>
</plist>

若是這邊文章對您有幫助, 感謝 下方點贊 或 Star GitHub: electron-api-demos-Zh_CN 支持, 謝謝.

相關文章
相關標籤/搜索