runtime.sendNativeMessage()

從擴充套件程式向原生應用程式傳送單個訊息。

此函式需要兩個必填引數:原生應用程式的名稱以及要傳送的訊息的 JSON 物件。瀏覽器將啟動原生應用程式並傳遞訊息。

這是一個非同步函式,返回一個 Promise。原生應用程式傳送的第一條訊息將被視為對 sendNativeMessage() 呼叫的響應,該 Promise 將會用此訊息作為引數來 fulfilled。請注意,您不能使用 runtime.onMessage 來獲取應用程式的響應:您必須改用回撥函式。

每次呼叫 runtime.sendNativeMessage() 時都會啟動應用程式的新例項。瀏覽器在收到回覆後將終止原生應用程式。要終止原生應用程式,瀏覽器將關閉管道,給程序幾秒鐘時間正常退出,如果程序尚未退出,則將其終止。

有關更多資訊,請參閱 原生訊息

語法

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

引數

application

string。原生應用程式的名稱。這必須與原生應用程式的 manifest 檔案中的“name”屬性匹配。

message

object。將傳送到原生應用程式的 JSON 物件。

返回值

一個 Promise。如果傳送者傳送了響應,則此 Promise 將會用 JSON 物件形式的響應來 fulfilled。否則,它將不帶引數地 fulfilled。如果連線原生應用程式時發生錯誤,則 Promise 將被拒絕並附帶錯誤訊息。

示例

這是一個後臺指令碼,當用戶點選瀏覽器操作時,它會向“ping_pong”應用程式傳送一條“ping”訊息並記錄響應。

js
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 基於 Chromium 的 chrome.runtime API。此文件源自 Chromium 程式碼中的 runtime.json