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
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:
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.