Spec-Zone.ru › Web Extensions

runtime.sendNativeMessage()

Отправляет одно сообщение из расширения в родное приложение.

Принимает два обязательных параметра: имя родного приложения и JSON-объект, являющийся отправляемым сообщением. Браузер запустит родное приложение и передаст сообщение.

Это асинхронная функция, которая возвращает Promise. Первое сообщение, отправленное родным приложением, обрабатывается как ответ на вызов sendNativeMessage(), и обещание будет выполнено с этим сообщением в качестве параметра. Обратите внимание, что вы не можете использовать runtime.onMessage для получения ответов от приложения: вы должны использовать функцию обратного вызова вместо этого.

Для вызова runtime.sendNativeMessage() запускается новая инстанция приложения. После получения ответа браузер завершит родное приложение. Для завершения родного приложения браузер закроет канал, даст процессу несколько секунд на безопасное завершение, а затем завершит его, если он не завершится.

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

Синтаксис

let sending = browser.runtime.sendNativeMessage(
  application,             // string
  message                  // object
)

Параметры

application

string. Имя родного приложения. Оно должно совпадать со свойством "name" в файле манифеста родного приложения.

message

object. JSON-объект, который будет отправлен родному приложению.

Возвращаемое значение

A Promise. Если отправитель отправил ответ, он будет выполнен с ответом в качестве JSON-объекта. В противном случае он будет выполнен без аргументов. Если при подключении к родному приложению возникнет ошибка, обещание будет отклонено с сообщением об ошибке.

Совместимость с браузером

Рабочий стол Мобильный
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
sendNativeMessage 29 15 50 ? 16
14См. документацию на developer.apple.com о native messaging в Safari.
? ? 68 ?
15См. документацию на developer.apple.com о native messaging в Safari.
?

Примеры

Вот скрипт фонового процесса, который отправляет сообщение "ping" приложению "ping_pong" и регистрирует ответ всякий раз, когда пользователь нажимает на действие браузерной вкладки:

function onResponse(response) {
  console.log(`Received ${response}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

/*
On a click on the browser action, send the app a message.
*/
browser.browserAction.onClicked.addListener(() => {
  console.log("Sending:  ping");
  let sending = browser.runtime.sendNativeMessage("ping_pong", "ping");
  sending.then(onResponse, onError);
});

Примечание: Этот API основан на API chrome.runtime Chromium. Данная документация получена из runtime.json в коде Chromium.

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendNativeMessage

Spec-Zone.ru

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