Safari-Extension soll auf App-Eingaben hören

  • Safari-Extension soll auf App-Eingaben hören

    Guten Abend zusammen,

    ich habe eine App für macOS und möchte diese durch eine Safari-Ext erweitern. In der App sollen auf Knopfdruck Daten an die Safari-Ext übergeben werden, welche die Ext dann auf der Website in ein Formular übergibt. Das JS für letzteres ist ja noch einfach. Aber leider funktioniert die Übergabe nicht.

    In meiner App habe ich folgende func:

    Quellcode

    1. func sendMessageToSafariExtension() {
    2. let message = [
    3. "action": "fillForm",
    4. "user_login": "deinBenutzername",
    5. "user_pass": "deinPasswort"
    6. ]
    7. SFSafariApplication.dispatchMessage(withName: "fillForm",
    8. toExtensionWithIdentifier: "de.xxxxxx.Safari-Web-Test.Inject",
    9. userInfo: message) { error in
    10. if let error = error {
    11. print("Fehler beim Senden der Nachricht: \(error.localizedDescription)")
    12. } else {
    13. print("Nachricht erfolgreich gesendet.")
    14. }
    15. }
    16. }
    Alles anzeigen


    Die background.js sollte jetzt darauf hören:

    JavaScript-Quellcode

    1. // Wartet auf Nachrichten von der App
    2. console.log("in der background.js")
    3. browser.runtime.onMessageExternal.addListener((message, sender, sendResponse) => {
    4. console.log("im Listener")
    5. if (message.action === "fillForm") {
    6. // Nachricht an das Content-Script weiterleiten
    7. browser.tabs.query({ active: true, currentWindow: true }, (tabs) => {
    8. if (tabs.length > 0) {
    9. browser.tabs.sendMessage(tabs[0].id, {
    10. action: "fillForm",
    11. user_login: message.user_login,
    12. user_pass: message.user_pass
    13. });
    14. }
    15. });
    16. sendResponse({ status: "ok" });
    17. }
    18. });
    Alles anzeigen


    Leider kommt in der background.js nichts an. In der Konsole kommt kein "im Listener" raus, wenn ich den Button drücke.

    Muss ich in der manifest was besonderes einstellen? Oder muss ich an der Sandbox oder in der info.plist oder sonst wo was einstellen? Hat hier jemand Erfahrungen?