| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 'use strict';
- const { app } = require('electron');
- const config = require('../config');
- const eLogger = require('./eLogger').get();
- /**
- * 唤起Electron应用
- */
- exports.setup = function () {
- console.log('[electron-lib-awaken] [setup]');
- const protocolInfo = config.get('awakeProtocol');
- const PROTOCOL = protocolInfo.protocol;
- // 唤醒的协议详情,开发者可根据所带参数,开发额外功能
- let awakeUrlInfo = {}
- app.setAsDefaultProtocolClient(PROTOCOL);
- handleArgv(process.argv);
- app.on('second-instance', (event, argv) => {
- if (process.platform === 'win32') {
- handleArgv(argv)
- }
- })
- // 仅用于macOS
- app.on('open-url', (event, urlStr) => {
- handleUrl(urlStr)
- })
- // 参数处理
- function handleArgv(argv) {
- const offset = app.isPackaged ? 1 : 2;
- const url = argv.find((arg, i) => i >= offset && arg.startsWith(PROTOCOL));
- handleUrl(url)
- }
- // url解析
- function handleUrl(awakeUrlStr) {
- eLogger.info('[awaken] [handleUrl] url:', awakeUrlStr);
- if (!awakeUrlStr || awakeUrlStr.length === 0) {
- return
- }
- const {hostname, pathname, search} = new URL(awakeUrlStr);
- awakeUrlInfo = {
- urlStr: awakeUrlStr,
- urlHost: hostname,
- urlPath: pathname,
- urlParams: search && search.slice(1)
- }
- eLogger.info('[awaken] [handleUrl] awakeUrlInfo:', awakeUrlInfo);
- }
- }
- exports = module.exports;
|