我正在开发一个 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,将不胜感激。谢谢!