簡體   English   中英

我可以直接從 Safari Web Extension 的后台頁面向 Native App 發送消息嗎?

[英]Can I send message directly from Safari Web Extension’s background page to Native App?

我正在開發一個 Safari 網絡擴展。 我需要將數據從 Web Extension 的后台頁面發送到本機應用程序。 本機應用程序獲取此消息並使用 USB 密鑰對其進行簽名以生成簽名值。 然后本機應用程序將簽名值發送回后台頁面。 向 Web 擴展的本機應用程序發送消息

首先,我在 background.js 中創建一個端口

let port = browser.runtime.connectNative("application.id");

在該端口上添加一個監聽器以接收來自 Native App 的消息,如下:

port.onMessage.addListener(function(message) {
    console.log("Received native port message:");
    console.log(message);
});

在我的本機應用程序中,我可以使用以下代碼向后台頁面發送消息:

SFSafariApplication.dispatchMessage(withName: "Hello from App", 
     toExtensionWithIdentifier: extensionBundleIdentifier,
     userInfo: ["AdditionalInformation": "Goes Here"], 
     completionHandler: { (error) -> Void in
          os_log(.default, "Dispatching message to the extension finished")
 })

但是如何從后台頁面向 Native App 發送消息? 在“Messaging a Web Extension's Native App”演示中,消息通過以下代碼發送:

port.postMessage("Hello from JavaScript Port");

但是沒有代碼顯示如何在本機應用程序中接收此消息。

在原生應用程序中,如何從后台頁面接收“postMessage”發送的消息? 如果能提供object-C的demo,將不勝感激。 謝謝!

在 WWDC'20 session Meet Safari Web Extensions中找到了您的問題的以下答案

應用⭤擴展

來自應用組或 NSXPCConnection 的共享 NSUserDefaults

另請參閱WWDC 注釋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM