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, das die zu sendende Nachricht darstellt. 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 sendNativeMessage() Aufruf behandelt, und das Promise wird mit dieser Nachricht als Parameter erfüllt. Beachten Sie, dass Sie nicht runtime.onMessage verwenden können, um Antworten von der Anwendung zu erhalten: Sie müssen stattdessen die Callback-Funktion verwenden.

Für jeden Aufruf von runtime.sendNativeMessage() wird eine neue Instanz der Anwendung 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 einige Sekunden Zeit, sich ordnungsgemäß zu beenden, und beendet ihn dann, falls 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 Manifestdatei der nativen Anwendung übereinstimmen.

message

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

Rückgabewert

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

Beispiele

Hier ist ein Hintergrundskript, das eine "ping"-Nachricht an die "ping_pong"-App sendet und die Antwort protokolliert, wann immer der Benutzer auf die Browseraktion 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);
});

Browser-Kompatibilität

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