如何通过移动网络浏览器 运行 android 应用程序(渐进式应用程序)

how to run android app through mobile web browser(progressive app)

我想创建一个渐进式 Web 应用程序,并且在该应用程序的特定流程中我希望 native android app 可以运行,因为需要一些硬件访问(USB 设备)。

所以我只希望网络应用程序使用一些参数重定向到 android native app。 android 应用程序功能结束后,捕获的数据将在应用程序流程的控制下再次发送回网络。

  1. 如何实现?

  2. 我正在使用 native SDK,因此无法将其放入网络应用程序中。

  3. 如果用户没有安装native app before,将如何处理?必须在用户的手机上安装 native app?

  4. 是否可以像这样 android 应用程序代码将 运行 通过网络应用程序(无需在用户的手机上安装本机应用程序)?如果可能,它会是很棒的解决方案吗?

取决于您尝试访问的 USB 硬件及其在 WebUSB 中的支持 API- 有针对性的OS/browser,你可能直接在JS中实现也不一定。您需要列出您的确切硬件,需要通过 USB、浏览器和 OS 访问的内容,以便有人可以判断您是否可以使用 WebAPI 来实现。这里是Chrome's documentation for WebAPI

您可以直接访问此站点 - what web can do today with HTML 5 APIs,在 "Surroundings" 部分下,如果 USB 为绿色勾号,则 device-browser 支持 USB。您可能会注意到一些 browser/platform 组合显示绿色和一些红色交叉(无支持)。

如果您断定 WebUSB 不支持您尝试访问的 USB 硬件 API,唯一的其他方法是让本机代码成为 PWA 和硬件之间的层。 Here is an example PWA 和本机 android 应用程序通过 WebSockets 进行通信的解决方案。通过网络缩进与 URL 中的参数进行通信是可能的。但是你能做的是有限的。当您需要的不仅仅是一个简单的字符串参数时,WebSockets 可能是更好的选择。在链接的 githug 代码中,您可以删除条形码扫描逻辑并替换为 USB 功能或任何其他 hardware/native API 访问。如果您可以确保您的用户安装本机应用程序或在未安装本机应用程序时提示安装,Websockets 解决方案 + 安装本机应用程序是很好的。如果您想在浏览器中支持网络应用程序 运行 以及已安装的应用程序(使用添加到主屏幕)

,这将是更好的选择

除非您想将此本机解决方案包装在 Cordova 类混合解决方案中,否则您不能将此本机解决方案放入 Web 应用程序中,在这种情况下,您可能会在 Webview 版本 <40 的旧设备中失去 PWA 服务工作者的优势。如果你想通过应用商店将你的 PWA 应用程序作为一个包发布并且发布两个应用程序(本机 + 网络)不是 possible/preferred,这将是一个不错的选择。