runtime.sendNativeMessage()
Sendet eine einzelne Nachricht von einer Erweiterung an eine native Anwendung.
Diese Funktion erfordert zwei Pflichtparameter: 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 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.
Für jeden Aufruf von runtime.sendNativeMessage()
wird eine neue Instanz der Anwendung gestartet. Der Browser wird die native Anwendung beenden, nachdem eine Antwort empfangen wurde. Zum Beenden einer nativen Anwendung wird der Browser die Pipe schließen, dem Prozess ein paar Sekunden geben, um sich ordnungsgemäß zu beenden, und ihn dann zerstören, falls er noch nicht beendet wurde.
Für weitere Informationen siehe Native Messaging.
Syntax
let sending = browser.runtime.sendNativeMessage(
application, // string
message // object
)
Parameter
application
-
string
. Der Name der nativen Anwendung. Dieser muss mit der Eigenschaft "name" in der Manifestdatei 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 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:
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 ist abgeleitet von runtime.json
im Chromium-Code.