runtime.sendNativeMessage()

Sendet eine einzelne Nachricht von einer Erweiterung an eine native Anwendung.

Dies erfordert zwei obligatorische Parameter: den Namen der nativen Anwendung und ein JSON-Objekt, welches die Nachricht ist, die gesendet werden soll. Der Browser wird die native Anwendung starten und die Nachricht übermitteln.

Dies ist eine asynchrone Funktion, die ein Promise zurückgibt. Die erste Nachricht, die von der nativen Anwendung gesendet wird, wird als Antwort auf den Aufruf von sendNativeMessage() behandelt, und das Promise wird mit dieser Nachricht als Parameter erfüllt. Beachten Sie, dass Sie runtime.onMessage nicht verwenden können, um Antworten von der Anwendung zu erhalten: Sie müssen stattdessen die Callback-Funktion verwenden.

Eine neue Instanz der Anwendung wird für einen Aufruf von runtime.sendNativeMessage() gestartet. Der Browser wird die native Anwendung nach Erhalt einer Antwort beenden. Um eine native Anwendung zu beenden, schließt der Browser die Verbindung, gibt dem Prozess ein paar Sekunden, um ordnungsgemäß zu beenden, und beendet ihn dann, wenn er nicht beendet wurde.

Für weitere Informationen siehe Native Messaging.

Syntax

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

Parameter

application

string. Der Name der nativen Anwendung. Dies muss mit der "name"-Eigenschaft in der manifest-Datei der nativen Anwendung übereinstimmen.

message

object. Ein JSON-Objekt, das an die native Anwendung gesendet wird.

Rückgabewert

Ein Promise. Wenn der Absender eine Antwort gesendet hat, wird dies mit der Antwort als JSON-Objekt erfüllt. Andernfalls wird es ohne Argumente erfüllt. Wenn beim Verbinden mit der nativen Anwendung ein Fehler auftritt, wird das Promise mit einer Fehlermeldung abgelehnt.

Browser-Kompatibilität

BCD tables only load in the browser

Beispiele

Hier ist ein Hintergrund-Skript, das eine "ping"-Nachricht an die "ping_pong" App sendet und die Antwort protokolliert, wann immer der Benutzer auf die Browser-Aktion klickt:

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);
});

Hinweis: Diese API basiert auf der chrome.runtime API von Chromium. Diese Dokumentation ist aus runtime.json im Chromium-Code abgeleitet.