Spec-Zone.ru › Electron

приложение

Управляйте жизненным циклом событий вашего приложения.

Процесс: Главный

Следующий пример демонстрирует, как выйти из приложения, когда закрыто последнее окно:

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

События​

Объект app испускает следующие события:

Событие: 'will-finish-launching'​

Используется при завершении базовой загрузки приложения. В Windows и Linux, событие will-finish-launching эквивалентно событию ready; в macOS это событие представляет уведомление applicationWillFinishLaunching о NSApplication. Обычно здесь нужно установить обработчики для событий open-file и open-url, запустить отчётчик сбоев и автоматическое обновление.

В большинстве случаев, все действия должны выполняться в обработчике события ready.

Событие: 'ready'​

Возвращает:

  • event Событие
  • launchInfo Record<string, any> | Ответ на уведомление macOS

Используется один раз, когда Electron завершил инициализацию. В macOS, launchInfo содержит userInfo NSUserNotification или информацию из UNNotificationResponse, если приложение было запущено из Центра уведомлений. Вы также можете вызвать app.isReady(), чтобы проверить, было ли это событие уже вызвано, и app.whenReady(), чтобы получить Promise, который выполняется при инициализации Electron.

Событие: 'window-all-closed'​

Используется, когда все окна закрыты.

Если вы не подписаны на это событие и все окна закрыты, приложение по умолчанию закрывается; однако, если вы подписаны, вы контролируете, закрывается ли приложение или нет. Если пользователь нажал Cmd + Q или разработчик вызвал app.quit(), Electron сначала попытается закрыть все окна, а затем испустит событие will-quit. В этом случае событие window-all-closed не будет испущено.

Событие: 'before-quit'​

Возвращает:

  • event Событие

Используется перед тем, как приложение начнёт закрывать свои окна. Вызов event.preventDefault() предотвратит стандартное поведение, которое заключается в завершении приложения.

Примечание: Если закрытие приложения инициировано autoUpdater.quitAndInstall(), то before-quit испускается после испускания события close для всех окон и их закрытия.

Примечание: В Windows это событие не будет испущено, если приложение закрыто из-за перезагрузки/выключения системы или выхода пользователя.

Событие: 'will-quit'​

Возвращает:

  • event Событие

Используется, когда все окна закрыты и приложение готовится к закрытию. Вызов event.preventDefault() предотвратит стандартное поведение, которое заключается в завершении приложения.

См. описание события window-all-closed для отличий между событиями will-quit и window-all-closed.

Примечание: В Windows это событие не будет испущено, если приложение закрыто из-за перезагрузки/выключения системы или выхода пользователя.

Событие: 'quit'​

Возвращает:

  • event Событие
  • exitCode Целое число

Используется при закрытии приложения.

Примечание: В Windows это событие не будет испущено, если приложение закрыто из-за перезагрузки/выключения системы или выхода пользователя.

Событие: 'open-file' macOS​

Возвращает:

  • event Событие
  • path строка

Используется, когда пользователь хочет открыть файл с помощью приложения. Событие open-file обычно испускается, когда приложение уже открыто, и ОС хочет повторно использовать приложение для открытия файла. open-file также испускается, когда файл перетаскивается на папку приложений, а приложение ещё не запущено. Убедитесь, что вы очень рано подписываетесь на событие open-file в начале запуска приложения для обработки этого случая (даже до испускания события ready).

Вы должны вызвать event.preventDefault(), если хотите обработать это событие.

В Windows вам нужно разобрать process.argv (в основном процессе), чтобы получить путь к файлу.

Событие: 'open-url' macOS​

Возвращает:

  • event Событие
  • url строка

Используется, когда пользователь хочет открыть URL с помощью приложения. Файл Info.plist приложения должен определить схему URL в ключе CFBundleURLTypes и установить NSPrincipalClass в значение AtomApplication.

Вы должны вызвать event.preventDefault(), если хотите обработать это событие.

Событие: 'activate' macOS​

Возвращает:

  • event Событие
  • hasVisibleWindows логическое значение

Используется, когда приложение активируется. Различные действия могут вызвать это событие, такие как запуск приложения в первый раз, попытка повторного запуска приложения, когда оно уже запущено, или нажатие на значок приложения в доке или панели задач.

Событие: 'did-become-active' macOS​

Возвращает:

  • event Событие

Используется, когда macOS приложение становится активным. Отличие от события activate заключается в том, что did-become-active испускается каждый раз, когда приложение становится активным, а не только при щелчке по значку в доке или повторном запуске приложения.

Событие: 'continue-activity' macOS​

Возвращает:

  • event Событие
  • type строка - Строка, идентифицирующая активность. Соответствует NSUserActivity.activityType.
  • userInfo неизвестно - Содержит приложению специфичную информацию, сохранённую деятельностью на другом устройстве.
  • details Объект
    • webpageURL строка (необязательно) - Строка, идентифицирующая URL страницы, к которой была обращена активность на другом устройстве, если доступна.

Используется при передаче, когда активность с другого устройства должна быть возобновлена. Вы должны вызвать event.preventDefault(), если хотите обработать это событие.

Возобновление пользовательской активности возможно только в приложении с тем же идентификатором команды разработчика, что и источник активности, и поддерживающем тип активности. Поддерживаемые типы активности указаны в Info.plist приложения под ключом NSUserActivityTypes.

Событие: 'will-continue-activity' macOS​

Возвращает:

  • event Событие
  • type строка - Строка, идентифицирующая активность. Соответствует NSUserActivity.activityType.

Используется при передаче перед возобновлением активности с другого устройства. Вы должны вызвать event.preventDefault(), если хотите обработать это событие.

Событие: 'continue-activity-error' macOS​

Возвращает:

  • event Событие
  • type строка - Строка, идентифицирующая активность. Соответствует NSUserActivity.activityType.
  • error строка - Строка с локализованным описанием ошибки.

Используется при передаче, когда возобновление активности с другого устройства завершается ошибкой.

Событие: 'activity-was-continued' macOS​

Возвращает:

  • event Событие
  • type строка - Строка, идентифицирующая активность. Сопоставляется с NSUserActivity.activityType.
  • userInfo неизвестно - Содержит прикладные данные, сохранённые активностью.

Выдаётся во время Handoff после успешного возобновления активности с этого устройства на другом.

Событие: 'update-activity-state' macOS​

Возвращает:

  • event Событие
  • type строка - Строка, идентифицирующая активность. Сопоставляется с NSUserActivity.activityType.
  • userInfo неизвестно - Содержит прикладные данные, сохранённые активностью.

Выдаётся, когда Handoff готовится к возобновлению на другом устройстве. Если вам нужно обновить передаваемые данные, вы должны вызвать event.preventDefault() немедленно, создать новый словарь userInfo и вызвать app.updateCurrentActivity() своевременно. В противном случае операция завершится ошибкой, и будет вызвано continue-activity-error.

Событие: 'new-window-for-tab' macOS​

Возвращает:

  • event Событие

Выдаётся, когда пользователь нажимает на кнопку создания новой вкладки в macOS. Кнопка новой вкладки отображается только если текущая BrowserWindow имеет tabbingIdentifier

Событие: 'browser-window-blur'​

Возвращает:

  • event Событие
  • window Окно браузера

Выдаётся, когда окно браузера browserWindow теряет фокус.

Событие: 'browser-window-focus'​

Возвращает:

  • event Событие
  • window Окно браузера

Выдаётся, когда окно браузера browserWindow получает фокус.

Событие: 'browser-window-created'​

Возвращает:

  • event Событие
  • window Окно браузера

Выдаётся при создании нового окна браузера browserWindow.

Событие: 'web-contents-created'​

Возвращает:

  • event Событие
  • webContents WebContents

Выдаётся при создании нового webContents.

Событие: 'certificate-error'​

Возвращает:

  • event Событие
  • webContents WebContents
  • url строка
  • error строка - Код ошибки
  • certificate Сертификат
  • callback Функция
    • isTrusted булево - Считать ли сертификат надёжным
  • isMainFrame булево

Выдаётся при неудачной проверке certificate для url. Чтобы доверять сертификату, необходимо предотвратить стандартное поведение с помощью 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)
  }
})

Событие: 'select-client-certificate'​

Возвращает:

  • event Событие
  • webContents WebContents
  • url URL
  • certificateList Массив сертификатов
  • callback Функция
    • 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'​

Возвращает:

  • event Событие
  • webContents WebContents
  • authenticationResponseDetails Объект
    • url URL
  • authInfo Объект
    • isProxy булево
    • scheme строка
    • host строка
    • port Целое число
    • realm строка
  • callback Функция
    • username строка (необязательно)
    • password строка (необязательно)

Выдаётся, когда webContents хочет выполнить базовый аутентификацию.

Стандартное поведение - отмена всех аутентификаций. Чтобы переопределить это, предотвратите стандартное поведение с помощью event.preventDefault() и вызовите callback(username, password) с учетными данными.

const { app } = require('electron')

app.on('login', (event, webContents, details, authInfo, callback) => {
  event.preventDefault()
  callback('username', 'secret')
})

Если callback вызван без имени пользователя или пароля, запрос на аутентификацию будет отменён, и ошибка аутентификации будет возвращена на страницу.

Событие: 'gpu-info-update'​

Выдаётся при каждом обновлении информации о GPU.

Событие: 'gpu-process-crashed' Устаревшее​

Возвращает:

  • event Событие
  • killed булево

Выдаётся, когда процесс GPU завершается ошибкой или убивается.

Устаревшее: Это событие заменено событием child-process-gone, которое содержит больше информации о причине исчезновения дочернего процесса. Не всегда это связано с ошибкой. Значение killed можно заменить проверкой reason === 'killed' при переходе на это событие.

Событие: 'renderer-process-crashed' Устаревшее​

Возвращает:

  • event Событие
  • webContents WebContents
  • killed булево

Выдаётся, когда процесс рендеринга webContents завершается ошибкой или убивается.

Устаревшее: Это событие заменено событием render-process-gone, которое содержит больше информации о причине исчезновения процесса рендеринга. Не всегда это связано с ошибкой. Значение killed можно заменить проверкой reason === 'killed' при переходе на это событие.

Событие: 'render-process-gone'​

Возвращает:

  • event Событие
  • webContents WebContents
  • details Объект
    • reason строка - Причина исчезновения процесса рендеринга. Возможные значения:
      • clean-exit - Процесс завершился с кодом 0
      • abnormal-exit - Процесс завершился с ненулевым кодом
      • killed - Процесс был послан SIGTERM или убит внешним образом
      • crashed - Процесс завершился с ошибкой
      • oom - Процесс вышел из памяти
      • launch-failed - Процесс так и не запустился
      • integrity-failure - Проверка целостности кода Windows завершилась с ошибкой
    • exitCode Целое число - Код завершения процесса, если reason не launch-failed, в этом случае exitCode будет платформенно-зависимым кодом ошибки запуска.

Выдаётся, когда процесс рендеринга неожиданно исчезает. Обычно это происходит из-за ошибки или убийства процесса.

Событие: 'child-process-gone'​

Возвращает:

  • event Событие
  • details Объект
    • type строка - Тип процесса. Одно из следующих значений:
      • Utility
      • Zygote
      • Sandbox helper
      • GPU
      • Pepper Plugin
      • Pepper Plugin Broker
      • Unknown
    • reason строка - Причина завершения дочернего процесса. Возможные значения:
      • clean-exit - Процесс завершился с кодом выхода 0
      • abnormal-exit - Процесс завершился с ненулевым кодом выхода
      • killed - Процесс был завершен внешним SIGTERM или другим способом
      • crashed - Процесс аварийно завершился
      • oom - У процесса закончилась память
      • launch-failed - Процесс никогда не был успешно запущен
      • integrity-failure - Проверка целостности кода на Windows завершилась ошибкой
    • exitCode число - Код выхода процесса (например, статус из waitpid в POSIX или из GetExitCodeProcess в Windows).
    • serviceName строка (необязательно) - Нелокализованное имя процесса.
    • name строка (необязательно) - Имя процесса. Примеры для утилит: Audio Service, Content Decryption Module Service, Network Service, Video Capture и т.д.

Выдается, когда дочерний процесс неожиданно исчезает. Это обычно происходит из-за сбоя или завершения процесса. Не включает процессы рендеринга.

Событие: 'accessibility-support-changed' macOS Windows​

Возвращает:

  • event Событие
  • accessibilitySupportEnabled логическое значение - true, когда поддержка функций доступности Chrome включена, false в противном случае.

Выдается при изменении поддержки функций доступности Chrome. Это событие срабатывает, когда технологии вспомогательных средств, такие как программы чтения с экрана, включаются или отключаются. Дополнительные сведения см. в https://www.chromium.org/developers/design-documents/accessibility.

Событие: 'session-created'​

Возвращает:

  • session Сеанс

Выдается, когда Electron создал новый session.

const { app } = require('electron')

app.on('session-created', (session) => {
  console.log(session)
})

Событие: 'second-instance'​

Возвращает:

  • event Событие
  • argv массив строк - Массив аргументов командной строки второго экземпляра
  • workingDirectory строка - Рабочий каталог второго экземпляра
  • additionalData неизвестный тип - Объект JSON с дополнительными данными, переданными из второго экземпляра

Это событие будет выдано в основном экземпляре вашего приложения, когда был запущен второй экземпляр и вызвал app.requestSingleInstanceLock().

argv — это массив аргументов командной строки второго экземпляра, а workingDirectory — его текущий рабочий каталог. Обычно приложения реагируют на это, делая главное окно активным и не свёрнутым.

Примечание: Если второй экземпляр запущен другим пользователем, чем первый, массив argv не будет содержать аргументы.

Это событие гарантированно выдаётся после события ready app.

Примечание: Дополнительные аргументы командной строки могут быть добавлены Chromium, например, --original-process-start-time.

Методы​

Объект app имеет следующие методы:

Примечание: Некоторые методы доступны только на определенных операционных системах и помечены как таковые.

app.quit()​

Попытаться закрыть все окна. Сначала будет выдано событие before-quit. Если все окна закрыты успешно, будет выдано событие will-quit, и по умолчанию приложение будет завершено.

Этот метод гарантирует, что все обработчики событий beforeunload и unload будут правильно выполнены. Возможно, окно отменит завершение, вернув false в обработчике события beforeunload.

app.exit([exitCode])​

  • exitCode Целое число (необязательно)

Немедленно завершает приложение с кодом выхода exitCode. exitCode по умолчанию равен 0.

Все окна будут закрыты немедленно без запроса у пользователя, и события before-quit и will-quit не будут вызваны.

app.relaunch([options])​

  • options Объект (необязательно)
    • args массив строк (необязательно)
    • execPath строка (необязательно)

Перезапускает приложение при выходе текущего экземпляра.

По умолчанию новый экземпляр будет использовать тот же рабочий каталог и аргументы командной строки, что и текущий экземпляр. Если указан args, вместо этого будут переданы args в качестве аргументов командной строки. Если указан execPath, для перезапуска будет выполнено execPath, а не текущее приложение.

Обратите внимание, что этот метод не завершает приложение при выполнении, вам нужно вызвать app.quit или app.exit после вызова app.relaunch, чтобы запустить перезапуск приложения.

Если метод app.relaunch вызывается несколько раз, после выхода текущего экземпляра будут запущены несколько экземпляров.

Пример перезапуска текущего экземпляра немедленно и добавления нового аргумента командной строки в новый экземпляр:

const { app } = require('electron')

app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) })
app.exit(0)

app.isReady()​

Возвращает boolean - true, если Electron завершил инициализацию, false в противном случае. См. также app.whenReady().

app.whenReady()​

Возвращает Promise<void> - выполняется при инициализации Electron. Может быть использован как удобная альтернатива проверке app.isReady() и подписке на событие ready, если приложение еще не готово.

app.focus([options])​

  • options Объект (необязательно)
    • steal логическое значение macOS - Сделать приложение получателем фокуса даже если другое приложение в данный момент активно.

В Linux фокусирует первое видимое окно. В macOS делает приложение активным. В Windows фокусирует первое окно приложения.

Старайтесь использовать опцию steal как можно реже.

app.hide() macOS​

Скрывает все окна приложения без их сворачивания.

app.isHidden() macOS​

Возвращает boolean - true, если приложение (включая все его окна) скрыто (например, с помощью Command-H), false в противном случае.

app.show() macOS​

Показывает окна приложения после их скрытия. Не фокусирует их автоматически.

app.setAppLogsPath([path])​

  • path строка (необязательно) - Пользовательский путь для ваших логов. Должен быть абсолютным.

Устанавливает или создает каталог для логов вашего приложения, который затем можно обрабатывать с помощью app.getPath() или app.setPath(pathName, newPath).

Вызов app.setAppLogsPath() без параметра path приведет к установке этого каталога в ~/Library/Logs/YourAppName на macOS и внутри каталога userData в Linux и Windows.

app.getAppPath()​

Возвращает string - Текущий каталог приложения.

app.getPath(name)​

  • name string - Вы можете запросить следующие пути по имени:
    • home Домашний каталог пользователя.
    • appData Каталог данных приложения для каждого пользователя, который по умолчанию указывает на:
      • %APPDATA% в Windows
      • $XDG_CONFIG_HOME или ~/.config в Linux
      • ~/Library/Application Support в macOS
    • userData Каталог для хранения файлов конфигурации приложения, который по умолчанию является каталогом appData с добавленным именем приложения. По соглашению файлы, хранящие данные пользователя, должны записываться в этот каталог, и не рекомендуется записывать здесь большие файлы, потому что некоторые среды могут резервировать этот каталог в облачном хранилище.
    • sessionData Каталог для хранения данных, сгенерированных Session, таких как localStorage, cookie, кэш диска, загруженные словари, состояние сети, файлы devtools. По умолчанию он указывает на userData. Chromium может записывать здесь очень большой кэш диска, поэтому, если ваше приложение не полагается на хранилище браузера, такое как localStorage или cookie, для сохранения данных пользователя, рекомендуется установить этот каталог в другие места, чтобы избежать загрязнения каталога userData.
    • temp Временный каталог.
    • exe Текущий исполняемый файл.
    • module Библиотека libchromiumcontent.
    • desktop Каталог рабочего стола текущего пользователя.
    • documents Каталог "Мои документы" пользователя.
    • downloads Каталог загрузок пользователя.
    • music Каталог музыки пользователя.
    • pictures Каталог изображений пользователя.
    • videos Каталог видео пользователя.
    • recent Каталог последних файлов пользователя (только Windows).
    • logs Каталог журнала приложения.
    • crashDumps Каталог, где хранятся дампы сбоев.

Возвращает string - Путь к специальному каталогу или файлу, связанному с name. В случае ошибки выбрасывается Error.

Если app.getPath('logs') вызывается без предварительного вызова app.setAppLogsPath(), будет создан каталог журнала по умолчанию, эквивалентный вызову app.setAppLogsPath() без параметра path.

app.getFileIcon(path[, options])​

  • path string
  • options Объект (необязательно)
    • size string
      • small - 16x16
      • normal - 32x32
      • large - 48x48 в Linux, 32x32 в Windows, не поддерживается в macOS.

Возвращает Promise<NativeImage> - выполнение с иконкой приложения, которая является NativeImage.

Получает связанную с путем иконку.

В Windows существует 2 типа иконок:

  • Иконки, связанные с определенными расширениями файлов, например, .mp3, .png и т. д.
  • Иконки внутри самого файла, например, .exe, .dll, .ico.

В Linux и macOS иконки зависят от приложения, связанного с типом MIME файла.

app.setPath(name, path)​

  • name string
  • path string

Переопределяет path на специальный каталог или файл, связанный с name. Если путь указывает на каталог, который не существует, выбрасывается Error. В этом случае каталог следует создать с помощью fs.mkdirSync или аналогично.

Вы можете переопределять только пути name, определённые в app.getPath.

По умолчанию cookie и кэш веб-страниц будут храниться в каталоге sessionData. Если вы хотите изменить это местоположение, вам необходимо переопределить путь sessionData до срабатывания события ready модуля app.

app.getVersion()​

Возвращает string - Версия загруженного приложения. Если версия не найдена в файле package.json приложения, возвращается версия текущего пакета или исполняемого файла.

app.getName()​

Возвращает string - Название текущего приложения, которое является именем в файле package.json приложения.

Обычно поле name в package.json — это короткое имя в нижнем регистре, согласно спецификации npm-модулей. Вы обычно также должны указать поле productName, которое представляет собой полное имя приложения в верхнем регистре, и Electron отдаст предпочтение ему перед name.

app.setName(name)​

  • name string

Переопределяет имя текущего приложения.

Примечание: Эта функция переопределяет имя, используемое внутри Electron; она не влияет на имя, используемое ОС.

app.getLocale()​

Возвращает string - Текущий языковой стандарт приложения, полученный с помощью библиотеки l10n_util Chromium. Возможные возвращаемые значения документированы здесь.

Для установки языкового стандарта следует использовать параметр командной строки при запуске приложения, который можно найти здесь.

Примечание: При распространении упакованного приложения необходимо также распространять папку locales.

Примечание: В Windows необходимо вызвать функцию после срабатывания событий ready.

app.getLocaleCountryCode()​

Возвращает string - Двухбуквенный код страны языкового стандарта операционной системы пользователя согласно ISO 3166. Значение взято из API родной ОС.

Примечание: При невозможности определить код страны языкового стандарта возвращается пустая строка.

app.addRecentDocument(path) macOS Windows​

  • path string

Добавляет path в список последних документов.

Этот список управляется ОС. В Windows вы можете открыть список с панели задач, а в macOS — из меню панели задач.

app.clearRecentDocuments() macOS Windows​

Очищает список последних документов.

app.setAsDefaultProtocolClient(protocol[, path, args])​

  • protocol string - Название вашего протокола без ://. Например, если вы хотите, чтобы ваше приложение обрабатывало ссылки electron://, вызовите этот метод с electron в качестве параметра.
  • path string (необязательно) Windows - Путь к исполняемому файлу Electron. По умолчанию process.execPath
  • args string[] (необязательно) Windows - Аргументы, передаваемые в исполняемый файл. По умолчанию пустой массив

Возвращает boolean - Успешность вызова.

Устанавливает текущий исполняемый файл как обработчик по умолчанию для протокола (или схемы URI). Это позволяет глубже интегрировать ваше приложение в операционную систему. После регистрации все ссылки с your-protocol:// будут открываться с помощью текущего исполняемого файла. Весь URL, включая протокол, будет передан вашему приложению в качестве параметра.

Примечание: В macOS вы можете регистрировать только протоколы, которые были добавлены в info.plist вашего приложения, которые нельзя изменить во время выполнения. Однако вы можете изменить файл во время сборки с помощью Electron Forge, Electron Packager или отредактировав info.plist с помощью текстового редактора. Для получения подробностей обратитесь к документации Apple.

Примечание: В среде Windows Store (при упаковке как appx) этот API вернёт true для всех вызовов, но зарегистрированный ключ реестра не будет доступен другим приложениям. Для регистрации приложения Windows Store в качестве обработчика протоколов по умолчанию необходимо указать протокол в вашем манифесте.

API использует реестр Windows и LSSetDefaultHandlerForURLScheme внутри.

app.removeAsDefaultProtocolClient(protocol[, path, args]) macOS Windows​

  • protocol строка - Название вашего протокола без ://.
  • path строка (необязательно) Windows - По умолчанию process.execPath
  • args массив строк (необязательно) Windows - По умолчанию пустой массив

Возвращает boolean - Успешность выполнения.

Этот метод проверяет, является ли текущий исполняемый файл обработчиком по умолчанию для протокола (т.е. схемы URI). Если да, то удаляет приложение как обработчик по умолчанию.

app.isDefaultProtocolClient(protocol[, path, args])​

  • protocol строка - Название вашего протокола без ://.
  • path строка (необязательно) Windows - По умолчанию process.execPath
  • args массив строк (необязательно) Windows - По умолчанию пустой массив

Возвращает boolean - Является ли текущий исполняемый файл обработчиком по умолчанию для протокола (т.е. схемы URI).

Примечание: В macOS этот метод можно использовать для проверки, зарегистрировано ли приложение как обработчик протокола по умолчанию. Вы также можете проверить это, посмотрев на ~/Library/Preferences/com.apple.LaunchServices.plist на компьютере macOS. Для получения подробностей обратитесь к документации Apple.

API использует внутренне реестр Windows и LSCopyDefaultHandlerForURLScheme.

app.getApplicationNameForProtocol(url)​

  • url строка - URL с именем протокола для проверки. В отличие от других методов в этой группе, он принимает весь URL, включая :// как минимум (например, https://).

Возвращает string - Имя приложения, обрабатывающего протокол, или пустую строку, если такого обработчика нет. Например, если Electron является обработчиком по умолчанию для URL, это может быть Electron в Windows и Mac. Однако не полагайтесь на точный формат, так как он не гарантируется неизменным. Ожидайте другой формат в Linux, возможно с суффиксом .desktop.

Этот метод возвращает имя приложения-обработчика по умолчанию для протокола (т.е. схемы URI) URL.

app.getApplicationInfoForProtocol(url) macOS Windows​

  • url строка - URL с именем протокола для проверки. В отличие от других методов в этой группе, он принимает весь URL, включая :// как минимум (например, https://).

Возвращает Promise<Object> - Разрешение с объектом, содержащим следующее:

  • icon NativeImage - значок приложения, обрабатывающего протокол.
  • path строка - путь установки приложения, обрабатывающего протокол.
  • name строка - отображаемое имя приложения, обрабатывающего протокол.

Этот метод возвращает обещание, содержащее имя приложения, значок и путь обработчика по умолчанию для протокола (т.е. схемы URI) URL.

app.setUserTasks(tasks) Windows​

  • tasks Task[] - Массив объектов Task

Добавляет tasks в категорию «Задачи» списка «Быстрый запуск» в Windows.

tasks — это массив объектов Task.

Возвращает boolean - Успешность выполнения.

Примечание: Если вы хотите ещё больше настроить список «Быстрый запуск», используйте app.setJumpList(categories) вместо этого.

app.getJumpListSettings() Windows​

Возвращает Object:

  • minItems Целое число - минимальное количество элементов, отображаемых в списке «Быстрый запуск» (более подробное описание этого значения см. в документации MSDN).
  • removedItems JumpListItem[] - Массив объектов JumpListItem, соответствующих элементам, которые пользователь явно удалил из пользовательских категорий в списке «Быстрый запуск». Эти элементы нельзя добавлять обратно в список «Быстрый запуск» в следующем вызове app.setJumpList(), Windows не отобразит никакую пользовательскую категорию, содержащую удалённые элементы.

app.setJumpList(categories) Windows​

  • categories JumpListCategory[] | null - Массив объектов JumpListCategory.

Возвращает string

Устанавливает или удаляет пользовательский список «Быстрый запуск» для приложения и возвращает одну из следующих строк:

  • ok - Ошибок не обнаружено.
  • error - Произошла одна или несколько ошибок, включите ведение журнала времени выполнения, чтобы определить вероятную причину.
  • invalidSeparatorError - Была предпринята попытка добавить разделитель в пользовательскую категорию в списке «Быстрый запуск». Разделители разрешены только в стандартной категории Tasks.
  • fileTypeRegistrationError - Была предпринята попытка добавить ссылку на файл в список «Быстрый запуск» для типа файла, который приложение не зарегистрировано обрабатывать.
  • customCategoryAccessDeniedError - Пользовательские категории не могут быть добавлены в список «Быстрый запуск» из-за настроек конфиденциальности или групповой политики пользователя.

Если categories равно null, ранее установленный пользовательский список «Быстрый запуск» (если таковой был) заменится стандартным списком «Быстрый запуск» для приложения (управляется Windows).

Примечание: Если объект JumpListCategory не имеет свойств type или name, то его type предполагается равным tasks. Если свойство name установлено, но свойство type опущено, то type предполагается равным custom.

Примечание: Пользователи могут удалять элементы из пользовательских категорий, и Windows не позволит добавлять удалённый элемент обратно в пользовательскую категорию до следующего успешного вызова app.setJumpList(categories). Любая попытка повторного добавления удалённого элемента в пользовательскую категорию раньше этого приведёт к тому, что вся пользовательская категория будет исключена из списка «Быстрый запуск». Список удалённых элементов можно получить с помощью app.getJumpListSettings().

Примечание: Максимальная длина свойства description элемента списка «Быстрый запуск» составляет 260 символов. При превышении этого лимита элемент не будет добавлен в список «Быстрый запуск» и не будет отображаться.

Вот очень простой пример создания пользовательского списка «Быстрый запуск»:

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'
      }
    ]
  }
])

app.requestSingleInstanceLock([additionalData])​

  • additionalData Record<any, any> (необязательно) - Объект JSON, содержащий дополнительные данные для отправки первому экземпляру.

Возвращает boolean

Значение возвращаемое этим методом указывает, получил ли этот экземпляр вашего приложения блокировку. Если блокировка не получена, можно предположить, что другой экземпляр вашего приложения уже запущен и обладает блокировкой, и немедленно завершить работу.

Т.е. этот метод возвращает true, если ваш процесс является главным экземпляром вашего приложения, и приложение должно продолжить загрузку. Он возвращает false, если процесс должен немедленно завершиться, так как он отправил свои параметры другому экземпляру, который уже получил блокировку.

В macOS система автоматически обеспечивает работу с одним экземпляром, когда пользователи пытаются открыть второй экземпляр вашего приложения в Finder, и для этого будут выпущены события open-file и open-url. Однако, когда пользователи запускают ваше приложение из командной строки, механизм системы с одним экземпляром будет проигнорирован, и вам нужно использовать этот метод для обеспечения работы с одним экземпляром.

Пример активации окна основного экземпляра, когда запускается второй экземпляр:

const { app } = require('electron')
let myWindow = null

const additionalData = { myKey: 'myValue' }
const gotTheLock = app.requestSingleInstanceLock(additionalData)

if (!gotTheLock) {
  app.quit()
} else {
  app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {
    // Print out data received from the second instance.
    console.log(additionalData)

    // Someone tried to run a second instance, we should focus our window.
    if (myWindow) {
      if (myWindow.isMinimized()) myWindow.restore()
      myWindow.focus()
    }
  })

  // Create myWindow, load the rest of the app, etc...
  app.whenReady().then(() => {
    myWindow = createWindow()
  })
}

app.hasSingleInstanceLock()​

Возвращает boolean

Этот метод возвращает значение, указывающее, владеет ли данный экземпляр приложения блокировкой единственного экземпляра. Блокировку можно запросить с помощью app.requestSingleInstanceLock(), а освободить с помощью app.releaseSingleInstanceLock()

app.releaseSingleInstanceLock()​

Освобождает все блокировки, созданные с помощью requestSingleInstanceLock. Это позволит нескольким экземплярам приложения снова работать параллельно.

app.setUserActivity(type, userInfo[, webpageURL]) macOS​

  • type строка - Уникально идентифицирует активность. Соответствует NSUserActivity.activityType.
  • userInfo любой тип - Состояние, специфичное для приложения, для хранения и использования другим устройством.
  • webpageURL строка (необязательно) - Веб-страница для загрузки в браузере, если на возобновляющем устройстве нет подходящего приложения. Схема должна быть http или https.

Создаёт NSUserActivity и устанавливает его как текущую активность. После этого активность может быть передана другому устройству с помощью Handoff.

app.getCurrentActivityType() macOS​

Возвращает string - тип текущей выполняемой активности.

app.invalidateCurrentActivity() macOS​

Деактивирует текущую активность Handoff.

app.resignCurrentActivity() macOS​

Отмечает текущую активность Handoff как неактивную, не деактивируя её.

app.updateCurrentActivity(type, userInfo) macOS​

  • type строка - Уникально идентифицирует активность. Соответствует NSUserActivity.activityType.
  • userInfo любой тип - Состояние, специфичное для приложения, для хранения и использования другим устройством.

Обновляет текущую активность, если её тип совпадает с type, объединяя записи из userInfo в её текущий словарь userInfo.

app.setAppUserModelId(id) Windows​

  • id строка

Изменяет Идентификатор модели пользователя приложения на id.

app.setActivationPolicy(policy) macOS​

  • policy строка - Может быть 'regular', 'accessory' или 'prohibited'.

Устанавливает политику активации для данного приложения.

Типы политик активации:

  • 'regular' - Приложение является обычным приложением, отображаемым в Dock и, возможно, имеющим пользовательский интерфейс.
  • 'accessory' - Приложение не отображается в Dock и не имеет строку меню, но может быть активировано программно или щелчком по одному из его окон.
  • 'prohibited' - Приложение не отображается в Dock и не может создавать окна или быть активированным.

app.importCertificate(options, callback) Linux​

  • options Объект
    • certificate строка - Путь к файлу pkcs12.
    • password строка - Пароль для сертификата.
  • callback Функция
    • result Целое число - Результат импорта.

Импортирует сертификат в формате pkcs12 в хранилище сертификатов платформы. callback вызывается с result операции импорта, значение 0 указывает на успех, а любое другое значение указывает на неудачу в соответствии с Chromium net_error_list.

app.configureHostResolver(options)​

  • options Объект
    • enableBuiltInResolver логическое значение (необязательно) - Используется ли встроенный резолвер хостов вместо getaddrinfo. При включении встроенный резолвер попытается использовать системные настройки DNS для выполнения DNS-запросов самостоятельно. Включено по умолчанию на macOS, выключено по умолчанию на Windows и Linux.
    • secureDnsMode строка (необязательно) - Может быть "off", "automatic" или "secure". Настраивает режим DNS-over-HTTP. Когда "off", не будут выполняться запросы DoH. Когда "automatic", запросы DoH будут выполняться в первую очередь, если доступен DoH, а запросы небезопасного DNS будут выполняться как резервный вариант. Когда "secure", будут выполняться только запросы DoH. По умолчанию "automatic".
    • secureDnsServers массив строк (необязательно) - Список шаблонов серверов DNS-over-HTTP. Подробнее о формате шаблона см. RFC8484 § 3. Большинство серверов поддерживают метод POST; шаблон для таких серверов — просто URI. Обратите внимание, что для некоторых поставщиков DNS резолвер автоматически переключится на DoH, если DoH явно не отключен, даже если в этом списке нет серверов DoH.
    • enableAdditionalDnsQueryTypes логическое значение (необязательно) - Управляет тем, разрешены ли дополнительные типы DNS-запросов, например HTTPS (тип DNS 65), помимо традиционных запросов A и AAAA, когда запрос выполняется через небезопасный DNS. Не оказывает влияния на безопасный DNS, который всегда разрешает дополнительные типы. По умолчанию true.

Настраивает разрешение хостов (DNS и DNS-over-HTTPS). По умолчанию используются следующие резолверы в порядке приоритета:

  1. DNS-over-HTTPS, если поставщик DNS поддерживает его, затем
  2. встроенный резолвер (по умолчанию включён только на macOS), затем
  3. системный резолвер (например, getaddrinfo).

Это можно настроить для ограничения использования небезопасного DNS (secureDnsMode: "secure") или отключения DNS-over-HTTPS (secureDnsMode: "off"). Также можно включить или отключить встроенный резолвер.

Чтобы отключить небезопасный DNS, можно указать secureDnsMode "secure". В этом случае убедитесь, что вы предоставили список серверов DNS-over-HTTPS для использования, на случай если конфигурация DNS пользователя не включает поставщика, поддерживающего DoH.

app.configureHostResolver({
  secureDnsMode: 'secure',
  secureDnsServers: [
    'https://cloudflare-dns.com/dns-query'
  ]
})

Этот API должен быть вызван после того, как было выпущено событие ready.

app.disableHardwareAcceleration()​

Отключает аппаратное ускорение для текущего приложения.

Этот метод может быть вызван только до готовности приложения.

app.disableDomainBlockingFor3DAPIs()​

По умолчанию Chromium отключает 3D API (например, WebGL) до перезапуска на основе доменов, если процессы GPU завершаются слишком часто. Эта функция отключает это поведение.

Этот метод может быть вызван только до готовности приложения.

app.getAppMetrics()​

Возвращает ProcessMetric[]: массив объектов ProcessMetric, соответствующих статистике использования памяти и процессора всех процессов, связанных с приложением.

app.getGPUFeatureStatus()​

Возвращает GPUFeatureStatus - состояние функций графического процессора из chrome://gpu/.

Примечание: Эта информация доступна только после того, как было выпущено событие gpu-info-update.

app.getGPUInfo(infoType)​

  • infoType строка - Может быть basic или complete.

Возвращает Promise<unknown>

Для infoType, равного complete: промис выполняется с Object, содержащим всю информацию о графическом процессоре, как в объекте GPUInfo из chromium. Это включает версию и информацию о драйвере, которая отображается на странице chrome://gpu.

Для infoType, равного basic: промис выполняется с Object, содержащим меньше атрибутов, чем при запросе с complete. Вот пример базового ответа:

{
  auxAttributes:
   {
     amdSwitchable: true,
     canSupportThreadedTextureMailbox: false,
     directComposition: false,
     directRendering: true,
     glResetNotificationStrategy: 0,
     inProcessGpu: true,
     initializationTime: 0,
     jpegDecodeAcceleratorSupported: false,
     optimus: false,
     passthroughCmdDecoder: false,
     sandboxed: false,
     softwareRendering: false,
     supportsOverlays: false,
     videoDecodeAcceleratorFlags: 0
   },
  gpuDevice:
   [{ active: true, deviceId: 26657, vendorId: 4098 },
     { active: false, deviceId: 3366, vendorId: 32902 }],
  machineModelName: 'MacBookPro',
  machineModelVersion: '11.5'
}

Рекомендуется использовать basic, если необходима только базовая информация, например, vendorId или driverId.

app.setBadgeCount([count]) Linux macOS​

  • count Целое число (необязательно) - Если значение предоставлено, значок устанавливается на это значение; в противном случае на macOS отображается обычная белая точка (например, неизвестное количество уведомлений). В Linux, если значение не предоставлено, значок не отображается.

Возвращает boolean - Успех выполнения вызова.

Устанавливает значок счётчика текущего приложения. Установка счётчика на значение 0 скроет значок.

На macOS значок отображается на значке приложения в доке. В Linux он работает только для запуска Unity.

Примечание: Для работы с Unity требуется файл .desktop. Для получения дополнительной информации ознакомьтесь с документацией по интеграции Unity.

app.getBadgeCount() Linux macOS​

Возвращает Integer - Текущее значение, отображаемое в значке счётчика.

app.isUnityRunning() Linux​

Возвращает boolean - Является ли текущая среда рабочего стола загрузчиком Unity.

app.getLoginItemSettings([options]) macOS Windows​

  • options Объект (необязательно)
    • path строка (необязательно) Windows - Путь к исполняемому файлу для сравнения. По умолчанию process.execPath.
    • args массив строк (необязательно) Windows - Аргументы командной строки для сравнения. По умолчанию пустой массив.

Если вы предоставили path и args параметры для app.setLoginItemSettings, необходимо передать те же аргументы сюда, чтобы openAtLogin установилось правильно.

Возвращает Object:

  • openAtLogin логическое значение - true, если приложение настроено на открытие при входе в систему.
  • openAsHidden логическое значение macOS - true, если приложение настроено на скрытое открытие при входе в систему. Этот параметр недоступен для сборки MAS.
  • wasOpenedAtLogin логическое значение macOS - true, если приложение было открыто при входе в систему автоматически.
  • wasOpenedAsHidden логическое значение macOS - true, если приложение было открыто как скрытый элемент входа в систему. Это указывает, что приложение не должно открывать какие-либо окна при запуске. Этот параметр недоступен для сборки MAS.
  • restoreState логическое значение macOS - true, если приложение было открыто как элемент входа в систему, который должен восстановить состояние из предыдущей сессии. Это означает, что приложение должно восстановить окна, которые были открыты в прошлый раз при закрытии приложения. Этот параметр недоступен для сборки MAS.
  • executableWillLaunchAtLogin логическое значение Windows - true, если приложение настроено на открытие при входе в систему, а его ключ запуска не отключён. Это отличается от openAtLogin, поскольку оно игнорирует параметр args. Это свойство будет истинным, если указанный исполняемый файл будет запущен при входе в систему с любыми аргументами.
  • launchItems Массив объектов Windows
    • name строка Windows - имя значения записи реестра.
    • path строка Windows - Исполняемый файл приложения, соответствующий записи реестра.
    • args массив строк Windows - аргументы командной строки для передачи исполняемому файлу.
    • scope строка Windows - одно из user или machine. Указывает, находится ли запись реестра в HKEY_CURRENT USER или HKEY_LOCAL_MACHINE.
    • enabled логическое значение Windows - true, если ключ приложения в реестре разрешён для запуска и, следовательно, отображается как enabled в диспетчере задач и настройках Windows.

app.setLoginItemSettings(settings) macOS Windows​

  • settings Объект
    • openAtLogin логическое значение (необязательно) - true для открытия приложения при входе в систему, false для удаления приложения как элемента входа в систему. По умолчанию false.
    • openAsHidden логическое значение (необязательно) macOS - true для открытия приложения скрытым. По умолчанию false. Пользователь может изменить это в настройках системы, поэтому необходимо проверять app.getLoginItemSettings().wasOpenedAsHidden при открытии приложения, чтобы узнать текущее значение. Этот параметр недоступен для сборки MAS.
    • path строка (необязательно) Windows - Исполняемый файл для запуска при входе в систему. По умолчанию process.execPath.
    • args массив строк (необязательно) Windows - Аргументы командной строки для передачи исполняемому файлу. По умолчанию пустой массив. Следите за тем, чтобы пути были заключены в кавычки.
    • enabled логическое значение (необязательно) Windows - true изменит ключ реестра для разрешения запуска и enable / disable приложение в диспетчере задач и настройках Windows. По умолчанию true.
    • name строка (необязательно) Windows - имя значения для записи в реестр. По умолчанию AppUserModelId() приложения. Установите параметры элемента входа в систему приложения.

Для работы с autoUpdater Electron на Windows, использующим 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"`
  ]
})

app.isAccessibilitySupportEnabled() macOS Windows​

Возвращает boolean - true, если поддержка доступности Chrome включена, false в противном случае. Этот API вернёт true, если использование вспомогательных технологий, таких как экранные читалки, было обнаружено. Подробнее см. https://www.chromium.org/developers/design-documents/accessibility.

app.setAccessibilitySupportEnabled(enabled) macOS Windows​

  • enabled логическое значение - Включить или отключить отображение дерева доступности

Вручную включает поддержку доступности Chrome, позволяя пользователям включить переключатель доступности в настройках приложения. Подробнее см. документацию по доступности Chromium. Отключено по умолчанию.

Этот API должен вызываться после того, как событие ready было отправлено.

Примечание: Отображение дерева доступности может значительно повлиять на производительность вашего приложения. Не следует включать его по умолчанию.

app.showAboutPanel()​

Отображает параметры панели сведений об приложении. Эти параметры можно переопределить с помощью app.setAboutPanelOptions(options).

app.setAboutPanelOptions(options)​

  • options Объект
    • applicationName строка (необязательно) - Название приложения.
    • applicationVersion строка (необязательно) - Версия приложения.
    • copyright строка (необязательно) - Информация об авторских правах.
    • version строка (необязательно) macOS - Номер версии сборки приложения.
    • credits строка (необязательно) macOS Windows - Информация об авторах.
    • authors массив строк (необязательно) Linux - Список авторов приложения.
    • website строка (необязательно) Linux - Веб-сайт приложения.
    • iconPath строка (необязательно) Linux Windows - Путь к значку приложения в формате JPEG или PNG. В Linux будет отображаться как 64x64 пикселя, сохраняя соотношение сторон.

Установите параметры панели "О программе". Это переопределит значения, определённые в файле .plist приложения на macOS. Для получения более подробной информации см. документацию Apple. В Linux значения необходимо установить для отображения; по умолчанию они не заданы.

Если вы не устанавливаете credits, но всё ещё хотите отобразить их в приложении, AppKit будет искать файлы с именами "Credits.html", "Credits.rtf" и "Credits.rtfd" (в этом порядке) в пакете, возвращаемом методом NSBundle main. Первый найденный файл будет использован, а если ни один не найден, область информации останется пустой. Для получения дополнительной информации см. документацию Apple.

app.isEmojiPanelSupported()​

Возвращает boolean — поддерживает ли текущая версия ОС встроенные выборщики эмодзи.

app.showEmojiPanel() macOS Windows​

Отображает встроенный выборщик эмодзи платформы.

app.startAccessingSecurityScopedResource(bookmarkData) mas​

  • bookmarkData строка - данные закладки, закодированные в base64, возвращённые методами dialog.showOpenDialog или dialog.showSaveDialog.

Возвращает Function — эту функцию **необходимо** вызывать после завершения доступа к файлу с ограниченным доступом. Если вы не вспомните, как остановить доступ к закладке, ресурсы ядра будут утечены, и ваше приложение потеряет возможность доступа за пределы зоны безопасности до перезапуска.

// Start accessing the file.
const stopAccessingSecurityScopedResource = app.startAccessingSecurityScopedResource(data)
// You can now access the file outside of the sandbox 🎉

// Remember to stop accessing the file once you've finished with it.
stopAccessingSecurityScopedResource()

Начало доступа к ресурсу с ограниченным доступом. С помощью этого метода приложения Electron, упакованные для Mac App Store, могут выйти за пределы своей зоны безопасности для доступа к файлам, выбранным пользователем. Смотрите документацию Apple для описания работы этой системы.

app.enableSandbox()​

Включает полную зону безопасности для приложения. Это означает, что все рендереры будут запускаться в зоне безопасности, независимо от значения флага sandbox в WebPreferences.

Этот метод может быть вызван только до готовности приложения.

app.isInApplicationsFolder() macOS​

Возвращает boolean — запуск приложения из папки "Приложения" системы. Используйте в сочетании с app.moveToApplicationsFolder()

app.moveToApplicationsFolder([options]) macOS​

  • options Объект (необязательно)
    • conflictHandler Функция<boolean> (необязательно) — обработчик потенциальных конфликтов при неудачном перемещении.
      • conflictType строка - тип конфликта, обнаруженного обработчиком; может быть exists или existsAndRunning, где exists означает, что приложение с таким же именем уже есть в каталоге «Приложения», а existsAndRunning означает, что оно существует и в настоящее время запущено.

Возвращает boolean — был ли перенос успешным. Обратите внимание, что если перенос успешен, ваше приложение завершит работу и перезапустится.

По умолчанию диалог подтверждения не будет показан. Если вы хотите позволить пользователю подтвердить операцию, вы можете сделать это с помощью API dialog.

**ПРИМЕЧАНИЕ:** Этот метод генерирует ошибки, если перемещение не произошло по инициативе пользователя. Например, если пользователь отменяет диалог авторизации, этот метод возвращает false. Если нам не удаётся выполнить копирование, этот метод вызовет ошибку. Сообщение об ошибке должно быть информативным и точно указывать причину сбоя.

По умолчанию, если приложение с таким же именем, что и перемещаемое, уже существует в каталоге «Приложения» и не запущено, существующее приложение будет удалено, а активное приложение переместится на его место. Если оно запущено, существующее запущенное приложение получит фокус, а ранее активное приложение завершит свою работу. Это поведение можно изменить, предоставив необязательный обработчик конфликтов, где возвращаемое обработчиком булево значение определяет, разрешается ли конфликт перемещения с помощью стандартного поведения. То есть возвращение false гарантирует, что никаких дальнейших действий не будет предпринято, возвращение true приведёт к стандартному поведению и продолжению метода.

Например:

app.moveToApplicationsFolder({
  conflictHandler: (conflictType) => {
    if (conflictType === 'exists') {
      return dialog.showMessageBoxSync({
        type: 'question',
        buttons: ['Halt Move', 'Continue Move'],
        defaultId: 0,
        message: 'An app of this name already exists'
      }) === 1
    }
  }
})

Это означает, что если приложение с тем же именем, что и перемещаемое, уже существует в каталоге пользователя, если пользователь выберет «Продолжить перемещение», функция продолжит работу со стандартным поведением, и существующее приложение будет удалено, а активное приложение будет перемещено на его место.

app.isSecureKeyboardEntryEnabled() macOS​

Возвращает boolean — включена ли функция Secure Keyboard Entry.

По умолчанию этот API возвращает false.

app.setSecureKeyboardEntryEnabled(enabled) macOS​

  • enabled boolean - Включить или отключить Secure Keyboard Entry

Устанавливает, включена ли функция Secure Keyboard Entry в вашем приложении.

Используя этот API, можно предотвратить перехват другими процессами такой важной информации, как пароли и другая конфиденциальная информация.

Для получения дополнительной информации см. документацию Apple.

**Примечание:** Включайте Secure Keyboard Entry только при необходимости и отключайте, когда она больше не нужна.

Свойства​

app.accessibilitySupportEnabled macOS Windows​

Свойство boolean, которое равно true, если поддержка функций доступности Chrome включена, и false в противном случае. Это свойство будет равно true, если обнаружено использование средств вспомогательных технологий, таких как программы чтения с экрана. Установка этого свойства в true вручную включает поддержку функций доступности Chrome, позволяя разработчикам предоставлять пользователям доступ к переключателю функций доступности в настройках приложения.

Для получения дополнительной информации см. документацию Chromium по доступности. Отключено по умолчанию.

Этот API должен вызываться после того, как будет выпущен ready.

**Примечание:** Отрисовка дерева функций доступности может существенно повлиять на производительность вашего приложения. Она не должна быть включена по умолчанию.

app.applicationMenu​

Свойство Menu | null, которое возвращает Menu, если был задан, и null в противном случае. Пользователи могут передать Меню для установки этого свойства.

app.badgeCount Linux macOS​

Свойство Integer, которое возвращает количество значков для текущего приложения. Установка значения в 0 скроет значок.

На macOS установка этого значения с любым ненулевым целым числом отображается на значке панели задач. В Linux это свойство работает только для загрузчика Unity.

Примечание: для работы Unity-загрузчика требуется файл .desktop. Для получения дополнительной информации, пожалуйста, ознакомьтесь с документацией по интеграции Unity.

Примечание: в macOS необходимо убедиться, что ваше приложение имеет разрешение отображать уведомления, чтобы это свойство стало эффективным.

app.commandLine Только для чтения​

Объект CommandLine, позволяющий читать и манипулировать аргументами командной строки, используемыми Chromium.

app.dock macOS Только для чтения​

Объект Dock | undefined, позволяющий выполнять действия с иконкой приложения в доке пользователя в macOS.

app.isPackaged Только для чтения​

Свойство boolean, которое возвращает true, если приложение упаковано, и false в противном случае. Для многих приложений это свойство можно использовать для различения сред разработки и производства.

app.name​

Свойство string, которое указывает имя текущего приложения, взятое из файла package.json приложения.

Обычно поле name в package.json — это короткое имя в нижнем регистре, согласно спецификации npm-модулей. Обычно также следует указать поле productName, которое представляет полное название приложения в верхнем регистре. Electron отдаст предпочтение полю name.

app.userAgentFallback​

Строка string, которую Electron будет использовать в качестве глобального значения по умолчанию.

Это пользовательский агент, который будет использован, когда пользовательский агент не задан на уровне webContents или session. Это полезно для обеспечения того, чтобы у всего приложения был одинаковый пользовательский агент. Установите пользовательское значение как можно раньше в процессе инициализации приложения, чтобы гарантировать использование изменённого значения.

app.runningUnderRosettaTranslation macOS Только для чтения Устаревшее​

Свойство boolean, которое, когда true, указывает, что приложение в данный момент запущено в среде переводчика Rosetta.

Вы можете использовать это свойство, чтобы попросить пользователей загрузить версию приложения для arm64, если они запускают x64-версию с помощью Rosetta неправильно.

Устаревшее: Это свойство устарело и заменено свойством runningUnderARM64Translation, которое определяет перевод приложения в ARM64 как в macOS, так и в Windows.

app.runningUnderARM64Translation Только для чтения macOS Windows​

Свойство boolean, которое, когда true, указывает, что приложение в данный момент запущено с помощью переводчика ARM64 (например, macOS Rosetta Translator Environment или Windows WOW).

Вы можете использовать это свойство, чтобы попросить пользователей загрузить версию приложения для arm64, если они запускают x64-версию с помощью Rosetta неправильно.

© GitHub Inc.
Licensed under the MIT license.
https://www.electronjs.org/docs/latest/api/app

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API