![](/img/trans.png)
[英]How can I debug my Safari App Extension when I load it from electron?
[英]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.