在 Chrome 打包应用程序和 Chrome 扩展程序之间进行通信?

Posted

技术标签:

【中文标题】在 Chrome 打包应用程序和 Chrome 扩展程序之间进行通信?【英文标题】:Communicating between a Chrome packaged app and a Chrome extension? 【发布时间】:2013-04-07 14:36:05 【问题描述】:

我需要将仅在 Chrome 打包应用程序中可用的功能(访问 syncFileSystem)和仅在 Chrome 扩展程序中可用的功能(将脚本注入第三方网站)结合起来。

似乎打包的应用程序和扩展程序都不能同时实现这两个目标,所以我现在正在考虑尝试通过单独的打包应用程序和扩展程序通信来实现我所追求的目标。

我看到Chrome's documentation 解释了两个扩展程序 如何通过chrome.runtime.onMessageExternal.addListenerchrome.runtime.sendMessage 进行通信,但没有关于打包应用程序和扩展程序的通信。

有人知道这是否允许吗?是否有任何文档或工作示例?

【问题讨论】:

【参考方案1】:

是的,这是可能的。您链接的文档中的代码示例适用于应用程序和扩展程序的任意组合。

chrome.runtime.sendMessage 的扩展文档说:

向扩展程序(或其他扩展程序/应用程序)内的onMessage 事件侦听器发送一条消息。

消息在扩展程序和应用程序中的工作方式相同,并且它们似乎完全兼容;只需使用目标扩展程序或应用程序的 ID。如果您查看 app version of chrome.runtime.sendMessage 的文档,您会发现它与扩展版本相同。

【讨论】:

很高兴看到您最终将应用程序和扩展程序捆绑在一起。理想情况下,我希望能够一键安装它们,但会满足于从两者中的任何一个到另一个的某种追加销售。并且检测应用程序是否已安装需要它处于后台权限模式吗? @mangini 的链接失效了,不过你可以试试:https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/messaging。 @apsillers,不是让用户同时安装应用程序和扩展程序,而是将它们组合成一个单元,以便用户只进行一次安装操作?

以上是关于在 Chrome 打包应用程序和 Chrome 扩展程序之间进行通信?的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 打包应用程序和 Chrome 扩展程序之间进行通信?

在浏览器选项卡内运行 Chrome 打包应用程序

Chrome 打包应用程序和双显示器

将文件类型与 Chrome 打包应用程序相关联

前端打包成桌面应用以及chrome扩展

将 Chromecast 与打包的 Chrome 应用程序一起使用