繁体   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