メインコンテンツへ飛ぶ

app

アプリケーションのイベントライフサイクルを制御します。

プロセス: メイン

以下の例では最後のウインドウが閉じられたときにアプリケーションを終了する方法を示します。

const { app } = require('electron')

app.on('window-all-closed', () => {
app.quit()
})

イベント

app オブジェクトでは以下のイベントが発生します。

イベント: 'will-finish-launching'

アプリケーションが基本的な起動処理を完了したときに発生します。 Windows と Linux上では、will-finish-launching イベントは ready イベントと同じです。macOS上では、このイベントはNSApplicationapplicationWillFinishLaunching 通知を表しています。

ほとんどの場合、ready イベントハンドラーですべてのことを行うようにするべきです。

イベント: 'ready'

戻り値:

Electron が一度、初期化処理を完了したときに発生します。 macOS でアプリケーションが通知センターから起動された場合、launchInfo はアプリケーションを開くために使用された NSUserNotificationuserInfoUNNotificationResponse の情報を保持しています。 また、app.isReady() を呼び出してこのイベントが発生したことがあるかどうかを確認したり、app.whenReady() を呼び出して Electron 初期化時に解決される Promise を取得したりできます。

note

ready イベントは、メインプロセスがイベントループの最初のティックを完了した後にのみ発生します。 ready イベントの前に Electron API を呼び出す必要がある場合は、メインプロセスのトップレベルのコンテキストで同期呼び出しをしてください。

イベント: 'window-all-closed'

すべてのウィンドウが閉じられたときに発生します。

このイベントを購読せずに全てのウインドウを閉じた場合、既定の動作としてアプリは終了します。しかし、このイベントを購読している場合は、アプリを終了するかどうかを制御することができます。 ユーザが Cmd + Q を押下したり、開発者が app.quit() を呼び出したりした場合では、Electron はまず全てのウインドウを閉じようとして、その後に will-quit イベントを発生させます。しかし、この場合は window-all-closed イベントは発生しません。

イベント: 'before-quit'

戻り値:

  • event Event

アプリケーションがウィンドウを閉じ始める前に発生します。 event.preventDefault() を呼び出すことで、アプリケーションが終了する既定の動作を阻害できます。

[!NOTE] アプリケーションの終了が autoUpdater.quitAndInstall() によって開始された場合、全てのウインドウで close イベントを発生させ、それらが閉じたbefore-quit が発生します。

[!NOTE] Windows では、このイベントはシステムのシャットダウン/再起動やユーザーのログアウトでアプリケーションが閉じられようとしている場合には発生しません。

イベント: 'will-quit'

戻り値:

  • event Event

すべてのウィンドウが閉じられ、アプリが終了しようとしているときに発生します。 event.preventDefault() を呼び出すことで、アプリケーションが終了する既定の動作を阻害できます。

will-quitwindow-all-closed イベントの差異を確認するためには、window-all-closed イベントの説明もお読みください。

[!NOTE] Windows では、このイベントはシステムのシャットダウン/再起動やユーザーのログアウトでアプリケーションが閉じられようとしている場合には発生しません。

イベント: 'quit'

戻り値:

  • event Event
  • exitCode Integer

アプリケーションが終了するときに発生します。

[!NOTE] Windows では、このイベントはシステムのシャットダウン/再起動やユーザーのログアウトでアプリケーションが閉じられようとしている場合には発生しません。

イベント: 'open-file' macOS

戻り値:

  • event Event
  • path string

ユーザがアプリケーションでファイルを開こうとしたときに発生します。 open-file イベントは、大抵の場合ファイルをアプリケーションが既に開いていて、OS が開くために再利用しようとしたときに発生します。 open-file は、Dock にファイルがドロップされて、アプリケーションがまだ起動していないときにも発生します。 このようなケースに対処するために、アプリケーション起動時の非常に早い段階 ( ready イベントが発生するよりも前) で open-file イベントを監視するようにしてください。

このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。

Windows では、ファイルパスを取得するために (メインプロセスの) process.argv をパースしなければなりません。

イベント: 'open-url' macOS

戻り値:

  • event Event
  • url string

ユーザがこのアプリケーションで URL を開こうとしたときに発生します。 アプリケーションの Info.plist ファイルで CFBundleURLTypes キーの中に URL スキームを定義し、NSPrincipalClassAtomApplication を設定しなければなりません。

open-file イベントと同様に、アプリケーションの起動時に open-url イベントのリスナーを必ず登録し、アプリケーションが URL のハンドリングとして開かれているかどうかを検出するようにしてください。 ready イベントの応答でリスナーを登録すると、アプリケーション起動のトリガーとなった URL を逃すことになります。

イベント: 'activate' macOS

戻り値:

  • event Event
  • hasVisibleWindows boolean

アプリケーションがアクティブになったときに発生します。 アプリケーションが最初に起動される、既に実行中のときにアプリケーションを再起動しようとする、アプリケーションのドックやタスクバーのアイコンをクリックするなど、いろいろなアクションがこのイベントの引き金となり得ます。

イベント: 'did-become-active' macOS

戻り値:

  • event Event

アプリケーションがアクティブになったときに発生します。 did-become-activeactivate イベントと異なり、アプリがアクティブになるときだけでなく、Dock アイコンがクリックされた時やアプリケーションが再起動した時にも発生します。 また、ユーザーが macOS のアプリ切り替えでこのアプリへと切り替えたときにも発生します。

イベント: 'did-resign-active' macOS

戻り値:

  • event Event

アプリがアクティブでなくなり、フォーカスがなくなったときに発生します。 これは例えば、他のアプリケーションをクリックしたり、macOS のアプリ切り替えで他のアプリケーションへ切り替えたりすると発生します。

イベント: 'continue-activity' macOS

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 Maps to NSUserActivity.activityType.
  • userInfo unknown - 別のデバイスのアクティビティによって保存されたアプリ固有の情報が含まれています。
  • details Object
    • webpageURL string (任意) - 利用可能な場合、別デバイス上の操作でアクセスしたウェブページの URL を特定する文字列になります。

Handoff 中、別のデバイスでアクティビティが再開されようとする際に発生します。 このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。

ユーザのアクティビティはアクティビティ元のアプリと同一の開発者チームIDを持ち、アクティビティタイプをサポートするアプリでしか継続させることができません。 サポートされるアクティビティタイプは、アプリの Info.plistNSUserActivityTypes キーで指定されています。

イベント: 'will-continue-activity' macOS

戻り値:

Handoff 中に、異なるデバイスでアクティビティが再開される前に発生します。 このイベントを処理する場合、event.preventDefault() を呼び出す必要があります。

イベント: 'continue-activity-error' macOS

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 Maps to NSUserActivity.activityType.
  • error string - エラーのローカライズされた説明としての文字列。

Handoff 中に、異なるデバイスでアクティビティの再開に失敗したときに発生します。

イベント: 'activity-was-continued' macOS

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 Maps to NSUserActivity.activityType.
  • userInfo unknown - アクティビティによって保存されたアプリ固有の情報が含まれています。

Handoff 中、別のデバイスでアクティビティが正常に再開された後に発生します。

イベント: 'update-activity-state' macOS

戻り値:

  • event Event
  • type string - アクティビティを識別する文字列。 Maps to NSUserActivity.activityType.
  • userInfo unknown - アクティビティによって保存されたアプリ固有の情報が含まれています。

Handoff が別のデバイスで再開される直前に発生します。 送信される情報を更新する必要があれば、event.preventDefault() をすぐに呼び出してください。そして、新しい userInfo 辞書を構築して app.updateCurrentActivity() を適切に呼び出してください。 さもなくば操作は失敗し、continue-activity-error が呼び出されます。

イベント: 'new-window-for-tab' macOS

戻り値:

  • event Event

ユーザーが macOS ネイティブの新規タブボタンをクリックすると発生します。 The new tab button is only visible if the current BrowserWindow has a tabbingIdentifier.

You must create a window in this handler in order for macOS tabbing to work as expected.

イベント: 'browser-window-blur'

戻り値:

browserWindow のフォーカスが外れたときに発生します。

イベント: 'browser-window-focus'

戻り値:

browserWindow がフォーカスされたときに発生します。

イベント: 'browser-window-created'

戻り値:

新しく browserWinodow が生成されたときに発生します。

イベント: 'web-contents-created'

戻り値:

新しく webContents が作成されたときに発生します。

イベント: 'certificate-error'

戻り値:

  • event Event
  • webContents WebContents
  • url string
  • error string - エラーコード
  • certificate Certificate
  • callback Function
    • isTrusted boolean - 証明書を信頼できるものと見なすかどうか
  • isMainFrame 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') {
// 検証ロジック。
event.preventDefault()
callback(true)
} else {
callback(false)
}
})

イベント: 'select-client-certificate'

戻り値:

クライアント証明書が要求されたときに発生します。

url がクライアント証明書を要求しているナビゲーションエントリーに対応していれば、リストからフィルターされたエントリーで callback を呼び出すことができます。 event.preventDefault() を使うことで、アプリケーションがストアから最初の証明書を使うのをキャンセルできます。

const { app } = require('electron')

app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})

イベント: 'login'

戻り値: