【问题标题】:Launching Chrome Packaged Web App from Website从网站启动 Chrome 打包的 Web 应用程序
【发布时间】:2013-09-17 22:08:08
【问题描述】:

我有一个 Chrome 打包的 Web 应用程序(因为它需要访问串行端口,所以它是必需的),我希望能够在我点击链接时从我的网站(带有一些数据)启动它/该网站上的按钮。

如果它能够检测用户是否没有运行 chrome 或没有安装 web 应用程序,并且可以将他们引导到正确的位置,那就更好了...

有例子吗?这似乎是一件显而易见的事情,但我真的很难找到任何东西......

【问题讨论】:

标签: google-chrome web-applications protocols handler google-chrome-app


【解决方案1】:

要启动应用程序,您可以使用 url_handlers,这是最近的新功能 landed(应该是 Chrome 31)。您可以在 URL 中传递数据。

您可以使用 chrome 网上商店的 inline install 功能检查是否已安装应用,如果没有则启动安装。

【讨论】:

  • 目前仅在“dev”频道可用,不稳定。
  • 现在看起来很稳定。实现起来非常简单。
  • 不幸的是,如果网页处于隐身模式,则 url_handlers 不起作用。还有其他想法吗?
【解决方案2】:

找到了解决这个问题的更好方法。

在@Vincent Scheib 解决方案中,您必须将用户重定向到/some/url,或打开一个新窗口(实际上可以作为弹出窗口阻止)。从 UX 方法来看,所有这些都不是那么好。

我的解决方案是创建应用程序并配置externally_connectable。您必须传递将尝试打开应用程序的网站的 url 域。例如:

"externally_connectable": {
    "matches": ["*://developer.chrome.com/*"]
} 

然后,在您的 background 脚本中打包的应用程序中,您可以执行以下操作:

chrome.runtime.onMessageExternal.addListener(function(message) {
      if(message.launch){ //This parameter will be passed in sendMessage method below
          chrome.app.window.create("main.html");
      }
});

最后,要触发应用打开,您必须使用打包的应用 ID 发送消息。例如:

chrome.runtime.sendMessage("mdoedhlejmepngilmgoenbhmipoclckb", { launch: true });

【讨论】:

  • 有什么想法,如何从网页启动应用程序没有指向“externally_connectable”?我想从任何网页启动我的后台应用程序(例如也从本地网络 192.168.1.1)。
  • @AlexeyBleikher 我认为 Vincent Scheib 的回答可以做到这一点
猜你喜欢
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 2014-11-13
  • 2016-07-31
相关资源
最近更新 更多