原文:https://github.com/electron/electron/blob/master/docs/api/app.md
譯者:Lin
控制你應用程序的生命周期事件
進程:主進程
下面的例子將展示如何在最后一個窗口被關閉時關閉應用程序。
const {app} = require('electron')
app.on('window-all-closed', () => {
app.quit()
})
<h2 id="events">事件</h2>
app
對象會分發下面的事件。
<h3 id="event-">事件:‘will-finish-launching’</h3>
應用程序完成基本的啟動時分發。Windows和Linux下,will-finish-launching
事件和ready
事件是相同的;macOS下,這個事件代表了NSApplication
中的applicationWillFinishLaunching
通知。你通常會在這里設置open-file
和open-url
事件的監聽,并且開始記錄崩潰日志和自動更新。
大多數情況下,你只需要在ready
事件回調中做所有事情。
<h3 id="event-">事件:‘ready’</h3>
返回值:
-
launchInfo
Object類型(macOS)
Electron完成初始化時分發事件。MacOS中,launchInfo
包含了NSUserNotification
中用來打開應用程序的userInfo
,如果它從通知中心被分發。如果這個事件被分發你可以調用app.isReady()
檢查。
<h3 id="event-">事件:‘window-all-closed’</h3>
當所有窗口都被關閉時分發此事件。
如果你沒有訂閱這個事件,那么當所有窗口都被關閉時默認行為是退出應用程序;然而,如果你訂閱了,你可以控制是否退出應用程序。如果用戶按Cmd + Q
,或者開發者調用app.quit()
,Electron將會首先嘗試關閉所有窗口,然后分發will-quit
事件,在這種情況下window-all-closed
事件并不會被分發。
<h3 id="event-">事件:‘before-quit’</h3>
返回值:
-
event
Event類型
應用程序開始關閉窗口之前分發事件。調用event.preventDefault()
將阻止終止應用程序的默認行為。
注意:如果應用程序是因為autoUpdater.quitAndInstall()
而退出,那么before-quit
將會在所有窗口分發close
事件并且關閉所有窗口之后被分發。
<h3 id="event-">事件:‘will-quit’</h3>
返回值:
-
event
Event類型
所有窗口都已經關閉,應用程序將要退出的時候分發事件。調用event.preventDefault()將阻止終止應用程序的默認行為。
查看window-all-closed
事件和will-quit and window-all-closed
事件描述上的區別。
<h3 id="event-quit">事件:‘quit’</h3>
返回值:
-
event
Event類型 -
exitCode
Integer類型
應用程序正在退出時被分發。
<h3 id="event-open-file">事件:‘open-file’ <i>(MacOS)</i></h3>
返回值:
-
event
Event類型 -
path
String類型
用戶想要使用應用程序打開一個文件時被分發。open-file
事件通常在應用程序已經打開并且系統想要應用程序重新文件時分發。open-file
也在一個文件拖入到dock并且應用程序尚未運行時被分發。請確認非常早的監聽open-file
事件,以便在你應用程序啟動時能夠處理這個事件(甚至會在ready
事件分發之前就會出現)。
如果你想要處理這個事件,你需要調用event.preventDefault()
。
Windows中,你需要分析process.argv
(在主進程中)來得到文件路徑。
<h3 id="event-open-url">事件:‘open-url’ <i>(MacOS)</i></h3>
返回值:
-
event
Event類型 -
url
String類型
當用戶想要使用應用程序打開一個地址時被分發。你的應用程序的Info.plist
文件必須使用CFBundleURLTypes
鍵定義url體系,并且在AtomApplication
中設置NSPrincipalClass
。
如果你想要處理這個事件,你需要調用event.preventDefault()。
<h3 id="event-activate">事件:‘activate’ <i>(MacOS)</i></h3>
返回值:
-
event
Event類型 -
hasVisibleWindows
Boolean類型
當用戶點擊應用程序在dock上的圖標導致應用程序被激活時分發。
<h3 id="event-continue-activity">事件:‘continue-activity’ <i>(MacOS)</i></h3>
返回值:
-
event
Event類型 -
type
String類型 - A string identifying the activity。對應NSUserActivity.activityType
。 -
userInfo
Object類型 - Contains app-specific state stored by the activity on another device.
Emitted during Handoff when an activity from a different device wants to be resumed. 如果你想要處理這個事件,你需要調用event.preventDefault()。
A user activity can be continued only in an app that has the same developer Team ID as the activity’s source app and that supports the activity’s type. Supported activity types are specified in the app’s Info.plist under the NSUserActivityTypes key.
<h3 id="event-browser-window-blur">事件:‘browser-window-blur’</h3>
返回值:
-
event
Event類型 -
window
BrowserWindow類型
當一個browserWindow失去焦點的時候被分發。
<h3 id="event-browser-window-focus">事件:‘browser-window-focus’</h3>
返回值:
-
event
Event類型 -
window
BrowserWindow類型
當一個browserWindow獲得焦點的時候被分發。
<h3 id="event-browser-window-created">事件:'browser-window-created’</h3>
返回值:
-
event
Event類型 -
window
BrowserWindow類型
當一個新的browserWindow被創建的時候被分發。
<h3 id="event-certificate-error">事件:‘certificate-error’</h3>
返回值:
-
event
Event類型 -
webContents
WebContents類型 -
url
String類型 -
error
String類型 - 錯誤代碼 -
certificate
Certificate類型 -
callback
Function類型-
isTrusted
Boolean類型 - 證書是否是可信的
-
無法驗證url
的certificate
時被分發,如果想要相信這個證書,并且你需要阻止默認行為你需要調用event.preventDefault()
和callback(true)
。
const {app} = require('electron')
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
if (url === 'https://github.com') {
// Verification logic.
event.preventDefault()
callback(true)
} else {
callback(false)
}
})
<h3 id="event-select-client-certificate">事件:‘select-client-certificate’</h3>
返回值:
-
event
Event類型 -
webContents
WebContents類型 -
url
URL類型 -
certificateList
Certificate[]類型 -
callback
Function類型-
certificate
Certificate類型(可選參數)
-
請求客戶端證書時被分發。
url
對應的是請求客戶端證書的導航記錄,callback
被調用并且傳入從列表中過濾的記錄。使用event.preventDefault()
阻止應用程序使用保存的第一個證書。
const {app} = require('electron')
app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})
<h3 id="event-login">事件:‘login’</h3>
返回值:
-
event
Event類型 -
webContents
WebContents類型 -
request
Object類型-
method
String類型 -
url
URL類型 -
referrer
URL類型
-
-
authInfo
Object類型-
isProxy
Boolean類型 -
scheme
String類型 -
host
String類型 -
port
Integer類型 -
realm
String類型
-
-
callback
Function類型-
username
String類型 -
password
String類型
-
webContents
想要做基本認證(auth)時被分發。
默認行為是取消所有認證,想要重寫你需要調用event.preventDefault()
阻止默認行為,并且使用證書中的數據調用callback(username, password)
。
const {app} = require('electron')
app.on('login', (event, webContents, request, authInfo, callback) => {
event.preventDefault()
callback('username', 'secret')
})
<h3 id="event-gpu-process-crashed">事件:‘gpu-process-crashed’</h3>
返回值:
-
event
Event類型 -
killed
Boolean類型
當GPU進程崩潰或者被殺死時被分發。
<h3 id="event-accessibility-support-changed">事件:‘accessibility-support-changed’ <i>(MacOS,Windows)</i></h3>
返回值:
-
event
Event類型 -
accessibilitySupportEnabled
Boolean類型 -true
是Chrome的accessibility支持被開啟,false
則是被停用。
當Chrome的accessibility支持改變時被分發。這個事件在殘疾人輔助功能,如屏幕閱讀器被啟用或停用時觸發。詳情見https://www.chromium.org/developers/design-documents/accessibility。
<h2 id="methods">方法</h2>
app
對象有以下方法:
注意:某些方法只適用于特定的操作系統,已經被標記。
<h3 id="app-quit">app.quit()</h3>
嘗試關閉所有窗口。before-quit
事件將首先被分發。如果所有窗口都被成功的關閉則will-quit
事件將會被分發,并且默認情況下應用程序將會被終止。
這個方法保證了所有beforeunload
和unload
事件的回調被正確的執行。有可能在某個窗口取消退出并且在beforeunload
事件中返回false
。
<h3 id="app-exit">app.exit([exitCode])</h3>
-
exitCode
Integer類型(可選參數)
傳入參數exitCode
立即退出。exitCode
默認為0。
除非告訴用戶否則所有窗口立刻關閉,并且before-quit
事件和will-quit
事件將不會被分發。
<h3 id="app-relaunch">app.relaunch([options])</h3>
-
options
Object類型(可選參數)-
args
String[]類型 -(可選參數) -
execPath
String類型(可選參數)
-
當前應用實例被退出之后重載應用。
默認情況下,新的實例將會使用同樣的工作目錄和當前實例的命令行參數。當args
參數被設置時,args
參數將會被用來替代 命令行參數。當execPath
參數被設置時,execPath
參數將會被用來在重載替代當前應用。
請注意,這個方法執行時不能退出應用,你需要在調用app.relaunch
使應用重新運行之后再調用app.quit
或者app.exit
。
當app.relaunch
被多次調用,多個實例將會在當前實例退出之后運行。
一個立即重新啟動當前實例并且添加新的命令行參數到新實例的例子:
const {app} = require('electron')
app.relaunch({args: process.argv.slice(1).concat(['--relaunch'])})
app.exit(0)
<h3 id="app-isReady">app.isReady()</h3>
返回值為Boolean
類型 - 如果是true
則表示Electron已經完成初始化,如果是false
則表示尚未完成初始化。
<h3 id="app-focus">app.focus()</h3>
Linux中,聚焦在第一個可見的窗口。MacOS中,使得應用程序變成激活狀態的應用程序。Windows中,聚焦在應用程序的第一個窗口。
<h3 id="app-hide">app.hide()</h3>
隱藏所有應用程序的窗口,而不是最小化它們。
<h3 id="app-show">app.show()</h3>
顯示隱藏后的應用程序窗口。但不會自動聚焦它們。
<h3 id="app-getAppPath">app.getAppPath()</h3>
返回值為String
類型 - 當前應用程序的目錄。
<h3 id="app-getPath">app.getPath(name)</h3>
-
name
String類型
返回值為String
類型 - 指定目錄或文件的整體路徑。如果發生故障將會拋出一個錯誤。
你可以通過名字請求以下的路徑:
-
home
用戶的主頁目錄 -
appData
每個用戶應用程序數據目錄,默認情況下指向下面的路徑:-
%APPDATA%
在Windows中 -
$XDG_CONFIG_HOME
或者~/.config
在Linux中 -
~/Library/Application Support
在macOS中
-
-
userData 存儲你的應用程序配置文件的目錄,默認情況下是
appData`目錄加上你的應用名稱。 -
temp
臨時文件目錄。 -
exe
當前可執行文件。 -
module
libchromiumcontent
庫。 -
desktop
當前用戶桌面目錄。 -
documents
用戶的“我的文檔”的目錄。 -
downloads
用戶的下載目錄。 -
music
用戶的音樂目錄。 -
pictures
用戶的圖片目錄。 -
videos
用戶的視頻目錄。 -
pepperFlashSystemPlugin
Pepper Flash插件在當前系統版本中的完整路徑。
<h3 id="app-setPath">app.setPath(name, path)</h3>
-
name
String類型 -
path
String類型
使用指定的文件夾或者文件重寫指定的name
對應的路徑。如果指定的文件夾不存在那么這個方法將自動創建這個文件夾。如果發生故障將會拋出一個錯誤。
你只能重寫app.getPath
中定義的name
對應的路徑。
默認情況下,網頁的cookies和緩存將會被存儲在userData
目錄下。如果你想要改變這個本地路徑,你需要在ready
事件被app
模塊分發之前重寫userData
對應的路徑。
<h3 id="app-getVersion">app.getVersion()</h3>
R返回值為String
類型 - 已經加載的應用程序的版本號。如果在package.json
文件內沒有發現應用程序的版本號,那么就會返回當前包或者可執行文件的版本號。
<h3 id="app-getName">app.getName()</h3>
返回值為String
類型 - 寫在應用程序package.json
文件中的當前應用程序的名字。
通常根據npm 模塊說明,package.json
中的name
字段是短的小寫名稱。你通常都需要指定一個productName
字段,這個字段是你應用程序的全部大寫的名字,這個字段的名字Electron將會作為首選名稱。
<h3 id="app-setName">app.setName(name)</h3>
-
name
String類型
重寫當前應用程序的名字。
<h3 id="app-getLocale">app.getLocale()</h3>
返回值為String
類型 - 當前應用程序的本地路徑。可能的返回值都將會被記錄在這里。
注意:當發布你的打包好的應用時,你需要發送到本地文件夾。
注意:Windows中你需要在ready
事件被分發之后調用它。
<h3 id="app-addRecentDocument">app.addRecentDocument(path) <i>(MacOS,Windows)</i></h3>
-
path
String類型
添加路徑到最近使用的文檔列表。
這個列表由系統管理。Windows中你可以在任務欄查看這個列表,macOS中你可以在dock菜單中查看這個列表。
<h3 id="app-clearRecentDocuments">app.clearRecentDocuments() <i>(MacOS,Windows)</i></h3>
清除最近使用的文件列表。
<h3 id="app-setAsDefaultProtocolClient">app.setAsDefaultProtocolClient(protocol[, path, args]) <i>(MacOS,Windows)</i></h3>
-
protocol
String類型 - 你的協議的名字,不包含://
。如果你想要你的應用處理electron://
鏈接,則使用electron
作為參數來調用這個方法。 -
path
String類型(可選參數) Windows可用 - 默認為process.execPath
-
args
String[]類型(可選參數)Windows可用 - 默認為空數組
返回值為Boolean
類型 - 是否調用成功。
這個方法設置當前的可執行文件的默認處理協議(又名URI方案)。它將允許你集成的應用程序到系統的更深層次中。注冊一次,所有的your-protocol://
鏈接都將會使用當前的可執行文件打開。
Windows中你可以提供可選的path
參數,路徑指向的可執行文件,當可執行文件啟動時,args
中的數組參數將會被傳遞到那個可執行文件中。
注意:MacOS中你只能注冊已經添加到你的應用程序的info.plist
文件中的協議,是不可以在運行時間內更改的。然而你可以在編譯的時候使用一個簡單的文本編輯器或腳本來更改它。詳情請參閱Apple’s documentation。
這個接口使用Windows Registry和LSSetDefaultHandlerForURLScheme內核。
<h3 id="app-removeAsDefaultProtocolClient">app.removeAsDefaultProtocolClient(protocol[, path, args]) <i>(MacOS,Windows)</i></h3>
-
rotocol
String類型 - 你的協議的名字,不包含://
。 -
path
String類型(可選參數)Windows可用 - 默認為process.execPath
-
args
String[]類型(可選參數)Windows可用 - 默認為空數組
返回值為Boolean
類型 - 是否調用成功。
這個方法檢查當前可執行文件是否會默認處理一個協議(又名URI方案)。如果會處理,將從應用中移除這個默認處理。
<h3 id="app-isDefaultProtocolClient">app.isDefaultProtocolClient(protocol[, path, args]) <i>(MacOS,Windows)</i></h3>
-
protocol
String類型 - 你的協議的名字,不包含://
。 -
path
String類型(可選參數)Windows可用 - 默認為process.execPath
-
args
String[]類型(可選參數)Windows可用 - 默認為空數組
返回值為Boolean
類型。
這個方法檢查當前可執行文件是否會默認處理一個協議(又名URI方案)。如果會處理,將會返回true
,否則將會返回false
。
注意:MacOS中,如果這個應用程序已經注冊了默認處理的協議,則你可以使用這個方法檢查。你也可以通過macOS機器中的~/Library/Preferences/com.apple.LaunchServices.plist
文件來檢查。詳情請參閱Apple’s documentation。
這個接口使用Windows Registry和LSSetDefaultHandlerForURLScheme內核。
<h3 id="app-setUserTasks">app.setUserTasks(tasks) <i>(Windows)</i></h3>
-
tasks
Task[]類型 - Task類型的對象的數組。
Windows中添加tasks
到跳轉列表的Tasks部分。
tasks
是Task
類型的對象的數組。
返回值為Boolean
類型 - 是否調用成功。
注意:如果你想要自定義更多關于跳轉列表的內容,請使用app.setJumpList(categories)
。
<h3 id="app-getJumpListSettings">app.getJumpListSettings() <i>(Windows)</i></h3>
返回值為Object
類型:
-
minItems
Integer類型 - 將在跳轉列表中展示的項目的最小數量(關于這個值的更詳細的描述請看MSDN docs)。 -
removedItems
JumpListItem[]類型 -JumpListItem
對象類型的數組,JumpListItem
對象對應的項是已經明確的從跳轉列表中被用戶刪除的。這些項一定不能在下一次調用app.setJumpList()
時被重新加入到跳轉列表中,否則Windows將不會展示任何包含了刪除項的內容。
<h3 id="app-setJumpList">app.setJumpList(categories) <i>(Windows)</i></h3>
-
categories
JumpListCategory[]類型或者為null
-JumpListCategory
類型的對象的數組。
設置或者刪除一個應用程序中的自定義跳轉列表,并且會返回一下字符串之一:
-
ok
- 沒有出錯。 -
error
- 發生了一個或者多個錯誤,運行日志能夠可能造成的原因。 -
invalidSeparatorError
- 試圖將一個分隔符加入到跳轉列表的自定義部分。分隔符只允許在標準的Tasks
部分中添加。 -
fileTypeRegistrationError
- 試圖將一個應用程序沒有注冊可以處理的文件類型添加到跳轉列表中。 -
customCategoryAccessDeniedError
- 由于設置用戶隱私或者群組策略而不能添加到自定義跳轉列表中。
如果categories
是null
,之前設置的自定義跳轉列表(如果有的話)將會被重新添加到應用程序的跳轉列表中(Windows自動管理)。
注意:如果一個JumpListCategory
對象沒有設置type
屬性和name
屬性,那么type
屬性將會被假設為tasks
。如果name
屬性被設置而type
屬性沒有被設置,那么type
屬性將被假設為custom
。
注意:用戶可以從自定義的列表中移除項,Windows將不允許一個被移除的項重新添加回一個自定義列表,直到下次成功調用app.setJumpList(categories).
之后。任何試圖重新添加一個之前移除的項到一個自定義列表中的操作都將會被跳轉列表忽略。獲得列表中已經刪除的項請使用app.getJumpListSettings()
。
這里有一個創建自定義列表的非常簡單的例子:
const {app} = require('electron')
app.setJumpList([
{
type: 'custom',
name: 'Recent Projects',
items: [
{ type: 'file', path: 'C:\\Projects\\project1.proj' },
{ type: 'file', path: 'C:\\Projects\\project2.proj' }
]
},
{ // has a name so `type` is assumed to be "custom"
name: 'Tools',
items: [
{
type: 'task',
title: 'Tool A',
program: process.execPath,
args: '--run-tool-a',
icon: process.execPath,
iconIndex: 0,
description: 'Runs Tool A'
},
{
type: 'task',
title: 'Tool B',
program: process.execPath,
args: '--run-tool-b',
icon: process.execPath,
iconIndex: 0,
description: 'Runs Tool B'
}
]
},
{ type: 'frequent' },
{ // has no name and no type so `type` is assumed to be "tasks"
items: [
{
type: 'task',
title: 'New Project',
program: process.execPath,
args: '--new-project',
description: 'Create a new project.'
},
{ type: 'separator' },
{
type: 'task',
title: 'Recover Project',
program: process.execPath,
args: '--recover-project',
description: 'Recover Project'
}
]
}
])
<h3 id="app-makeSingleInstance">app.makeSingleInstance(callback)</h3>
-
callback
Function類型-
argv
String[]類型 - 第二實例的命令行參數數組 -
workingDirectory
String類型 - 第二實例的工作目錄
-
這個方法使你的應用程序變成一個單例應用程序而不允許多個你的應用程序的實例運行,這個方法將會確保你的應用程序只有一個實例在運行,并且其他的實例會發送信息到這個實例上并且退出。
當第二實例被運行的時候callback
會被callback(argv, workingDirectory)
調用。argv
是第二實例的命令行參數的數組,workingDirectory
是第二實例當前工作的目錄。通常應用程序響應這個回掉來使得它們的第一窗口聚焦并且取消最小化。
callback
一定在app
分發ready
事件之后被執行。
如果你操作的進程是應用程序的第一實例,則這個方法返回false
并且你的應用會繼續加載。如果你操作的進程已經發送參數給其他的實例,那么將會返回true
,并且你需要立即退出這個實例。
MacOS中,當用戶嘗試在Finder中打開一個你應用程序的第二實例時系統會自動的強制執行單例模式,并且open-file
和open-url
事件將會被分發。然而,當用戶在命令行中啟動你的應用程序時將會繞過系統的單例機制,你需要使用這個方法確保執行單粒模式。
一個當第二實例啟動時第一實例的窗口活動例子:
const {app} = require('electron')
let myWindow = null
const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()
}
})
if (shouldQuit) {
app.quit()
}
// Create myWindow, load the rest of the app, etc...
app.on('ready', () => {
})
<h3 id="app-releaseSingleInstance">app.releaseSingleInstance()</h3>
釋放所有通過makeSingleInstance
創建的鎖。這將允許應用程序的多個實例再一次并排運行。
<h3 id="app-setUserActivity">app.setUserActivity(type, userInfo[, webpageURL]) <i>(MacOS)</i></h3>
-
type
String類型 - 活動的唯一標識。對應NSUserActivity.activityType
。 -
userInfo
Object類型 - App-specific state to store for use by another device. -
webpageURL
String類型(可選參數)- The webpage to load in a browser if no suitable app is installed on the resuming device. The scheme must be http or https.
創建一個NSUserActivity
并且將它設置為當前的活動。這個活動是有資格在以后Handoff到其他設備的。
<h3 id="app-getCurrentActivityType">app.getCurrentActivityType() <i>(MacOS)</i></h3>
返回值為String
類型 - 當前正在運行的活動的類型。
<h3 id="app-setAppUserModelId">app.setAppUserModelId(id) <i>(Windows)</i></h3>
-
id
String類型
使用參數id
更改Application User Model ID。
<h3 id="app-importCertificate">app.importCertificate(options, callback) <i>(Linux)</i></h3>
-
options
Object類型-
certificate
String類型 - pkcs12文件的路徑。 -
password
String類型 - 證書的密碼。
-
-
callback
Function類型-
result
Integer類型 - 引用結果。
-
引用pkcs12類型的證書到到平臺證書存儲中。引用操作之后會將result
傳入調用callback
,根據chromium的net_error_list,值為0
時代表成功,其他任何值都代表失敗。
<h3 id="app-disableHardwareAcceleration">app.disableHardwareAcceleration()</h3>
禁用當前應用的硬件加速。
這個方法只能在應用準備之前調用。
<h3 id="app-setBadgeCount">app.setBadgeCount(count) <i>(MacOS,Linux)</i></h3>
-
count
Integer類型
返回值為Boolean
類型 - 是否調用成功。
給當前應用設置計數標識。設置為0
將會隱藏這個標識。
MacOS中它將展示在dock的圖標上。Linux中它只在Unity的啟動器上工作。
注意:Unity啟動器需要一個.desktop
文件的實例才能工作,查看更多信息請閱讀Desktop Environment Integration。
<h3 id="app-getBadgeCount">app.getBadgeCount() <i>(MacOS,Linux)</i></h3>
返回值是Integer
類型 - 當前展示的計數標識的值。
<h3 id="app-isUnityRunning">app.isUnityRunning() <i>(Linux)</i></h3>
返回值為Boolean - 當前的桌面面環境是否為Unity啟動器。
<h3 id="app-getLoginItemSettings">app.getLoginItemSettings([options]) <i>(MacOS,Windows)</i></h3>
-
options
Object類型(可選參數)-
path
String類型(可選參數)Windows可用 - 與之前的可執行文件的目錄相比較。默認是process.execPath
。 -
args
String類型 Windows可用 - 與之前的命令行參數相比較。默認是空數組。
-
如果你給app.setLoginItemSettings
提供path
和args
選項 那么你需要通過同樣的參數來正確的設置openAtLogin
。
返回值為Object
類型:
-
openAtLogin
Boolean類型 - 如果應用在登錄系統時打開則是true
。 -
openAsHidden
Boolean類型 - 如果應用在登錄系統時隱藏模式打開則是true
。這個設置只有MacOS支持。 -
wasOpenedAtLogin
Boolean類型 - 如果應用在登錄系統時已經自動打開則是true
。這個設置只有MacOS支持。 -
wasOpenedAsHidden
Boolean類型 - 如果應用在作為一個隱藏啟動項打開則是true
。這表示應用在啟動時并沒有打開任何窗口。這個設置只有MacOS支持。 -
restoreState
Boolean類型 - 如果應用作為一個登錄項已經被打開并且需要恢復之前的會話狀態則是true
。這表示應用需要恢復最近一次關閉應用時打開的窗口。這個設置只有MacOS支持。
注意:這個接口在MAS builds上是沒有效果的。
<h3 id="app-setLoginItemSettings">app.setLoginItemSettings(settings[, path, args]) <i>(MacOS,Windows)</i></h3>
-
settings
Object類型-
openAtLogin
Boolean類型(可選參數)-true
為設置應用在登錄系統時打開,false
則將應用從登錄啟動項中移除。默認是false
。 -
openAsHidden
Boolean類型(可選參數)-true
為設置應用隱藏打開。默認為false
。用戶可以從系統偏好設置中設置這個選項,所以當應用被打開時需要檢查app.getLoginItemStatus().wasOpenedAsHidden
來獲取這個選項的當前值。這個設置僅有MacOS支持。 -
path
String類型(可選參數)Windows可用 - 登錄時啟動的可執行文件的路徑。默認為process.execPath
。 -
args
String類型 Windows可用 - 傳遞給可執行文件的命令行參數。默認為空的數組。注意使用引號包裹路徑。
-
設置應用的登錄選項。
Windows中和Electron的autoUpdater
一起工作,which uses Squirrel,你將想要設置Update.exe的啟動路徑,并且通過參數指定你的應用名稱。例如:
const appFolder = path.dirname(process.execPath)
const updateExe = path.resolve(appFolder, '..', 'Update.exe')
const exeName = path.basename(process.execPath)
app.setLoginItemSettings({
openAtLogin: true,
path: updateExe,
args: [
'--processStart', `"${exeName}"`,
'--process-start-args', `"--hidden"`
]
})
注意:這個接口在MAS builds上是沒有效果的。
<h3 id="app-isAccessibilitySupportEnabled">app.isAccessibilitySupportEnabled() <i>(MacOS,Windows)</i></h3>
返回值為Boolean
類型 - 如果Chrome的輔助功能被開啟則是true
,false
則是尚未開啟。如果檢測到使用了輔助技術,比如屏幕閱讀,這個接口將會返回true
。詳細請見https://www.chromium.org/developers/design-documents/accessibility。
<h3 id="app-setAboutPanelOptions">app.setAboutPanelOptions(options) <i>(MacOS)</i></h3>
-
options
Object類型-
applicationName
String類型(可選參數)- 應用的名字。 -
applicationVersion
String類型(可選參數)- 應用的版本。 -
copyright
String類型(可選參數)- Copyright信息。 -
credits
String類型(可選參數)- 信用信息。 -
version
String類型(可選參數)- 應用的開發版本號。
-
設置關于面板的選項。這將會覆蓋應用的.plist
文件中的定義的值。查看Apple docs獲取更多信息。
<h3 id="app-commandLine-appendSwitch">app.commandLine.appendSwitch(switch[, value])</h3>
-
switch
String類型 - 一個命令行開關 -
value
String類型(可選參數)- 傳給開關的值
給Chromium命令行添加一個開關(使用value
參數)。
注意:這將不會影響process.argv
,通常使用這個方法控制一些底層的Chromium行為。
<h3 id="app-commandLine-appendArgument">app.commandLine.appendArgument(value)</h3>
-
value
String類型 - 這個參數將會被加入到命令行中。
添加一個參數到Chromium的命令行。這個參數將會被正確的引用。
注意:這將不會影響process.argv
。
<h3 id="app-dock-bounce">app.dock.bounce([type]) <i>(MacOS)</i></h3>
-
type
String類型(可選參數)- 可以是critical
或者informational
。默認是informational
。
設置為critical
時,dock的圖標將會不斷跳動,直到這個應用被激活或者請求被取消。
設置為informational
時,dock的圖標將跳動一秒。然而這個請求一直有效,直到這個應用被激活或者請求被取消。
返回值為代表著請求的Integer
類型的ID。
<h3 id="app-dock-cancelBounce">app.dock.cancelBounce(id) <i>(MacOS)</i></h3>
-
id
Integer類型
通過id
來取消跳動。
<h3 id="app-dock-downloadFinished">app.dock.downloadFinished(filePath) <i>(MacOS)</i></h3>
-
filePath
String類型
如果filePath
指向的是Downloads文件夾則會使下載圖標跳動。
<h3 id="app-dock-setBadge">app.dock.setBadge(text) <i>(MacOS)</i></h3>
-
text
String類型
設置在dock區域顯示的字符串。
<h3 id="app-dock-getBadge">app.dock.getBadge() <i>(MacOS)</i></h3>
返回值為String
類型 - dock區域顯示的字符串。
<h3 id="app-dock-hide">app.dock.hide() <i>(MacOS)</i></h3>
隱藏dock上的圖標。
<h3 id="app-dock-show">app.dock.show() <i>(MacOS)</i></h3>
展示dock上的圖標。
<h3 id="app-dock-isVisible">app.dock.isVisible() <i>(MacOS)</i></h3>
返回值為Boolean
類型 - dock上的圖標是否可見。app.dock.show()
是異步調用,所以可能不會在調用后立刻返回結果。
<h3 id="app-dock-setMenu">app.dock.setMenu(menu) <i>(MacOS)</i></h3>
-
menu
Menu類型
設置應用的dock菜單。
<h3 id="app-dock-setIcon">app.dock.setIcon(image) <i>(MacOS)</i></h3>
-
image
(NativeImage | String)
設置應用在dock中的圖標。