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。