mirror of
https://gitee.com/dromara/electron-egg.git
synced 2026-05-14 19:52:10 +08:00
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const { app } = require('electron');
|
|
|
|
/**
|
|
* 应用唤醒模块
|
|
*/
|
|
module.exports = {
|
|
|
|
/**
|
|
* 安装
|
|
*/
|
|
install (eeApp) {
|
|
eeApp.logger.info('[preload] load awaken module');
|
|
const protocolInfo = eeApp.config.awakeProtocol;
|
|
const PROTOCOL = protocolInfo.protocol;
|
|
|
|
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) {
|
|
if (!awakeUrlStr || awakeUrlStr.length === 0) {
|
|
return
|
|
}
|
|
const {hostname, pathname, search} = new URL(awakeUrlStr);
|
|
let awakeUrlInfo = {
|
|
urlStr: awakeUrlStr,
|
|
urlHost: hostname,
|
|
urlPath: pathname,
|
|
urlParams: search && search.slice(1)
|
|
}
|
|
eeApp.logger.info('[awaken] [handleUrl] awakeUrlInfo:', awakeUrlInfo);
|
|
}
|
|
}
|
|
}
|
|
|