【问题标题】:how to run android app through mobile web browser(progressive app)如何通过移动网络浏览器运行 android 应用程序(渐进式应用程序)
【发布时间】:2018-04-10 17:41:51
【问题描述】:
我想创建一个渐进式 Web 应用程序,并且在该应用程序的某些流程中,我希望 native android app 能够运行,因为需要一些硬件访问(USB 设备)。
所以我只想让网络应用程序使用一些参数重定向到android native app。 android 应用程序功能结束后,捕获的数据将在控制应用程序流程的情况下再次发送回网络。
如何做到这一点?
我使用的是native SDK,所以无法将其放入网络应用程序中。
如果用户没有安装native app before,将如何处理? native app必须安装在用户手机上吗?
难道android应用程序代码将通过Web应用程序运行(无需在用户的手机中安装本机应用程序)吗?如果可能的话,这会是一个很棒的解决方案吗?
【问题讨论】:
标签:
java
android
web-applications
deep-linking
progressive-web-apps
【解决方案1】:
根据您尝试访问的 USB 硬件及其在WebUSB
API- Targeted OS/browser 中的支持,您可能无法直接在 JS 中实现。您需要列出您的确切硬件,需要通过 USB、浏览器和操作系统访问的内容,以便有人可以判断您是否可以使用 WebAPI 实现。这里是Chrome's documentation for WebAPI。
您可以简单地访问此站点 - what web can do today with HTML 5 APIs,在“环境”部分下,如果 USB 为绿色勾号,则该设备浏览器支持 USB。您可能会注意到一些浏览器/平台组合显示绿色和一些红十字(不支持)。
如果您断定 WebUSB API 不支持您尝试访问的 USB 硬件,则唯一的方法是在您的 PWA 和硬件之间设置一个本机代码作为层。 Here is an example PWA 和原生 android 应用程序通过 WebSockets 通信的解决方案。通过 Web 缩进与 URL 中的参数进行通信是可能的。但你能做的有限。当您需要的不仅仅是简单的 sting 参数时,WebSockets 可能是一个更好的选择。在链接的 githug 代码中,您可以删除条码扫描逻辑并替换为 USB 功能或任何其他硬件/本机 API 访问。如果您可以确保您的用户安装本机应用程序或在未安装时提示安装,则 Websockets 解决方案 + 安装本机应用程序很好。如果您想支持在浏览器中运行的网络应用程序以及已安装的应用程序(使用添加到主屏幕),这将是更好的选择
您不能将此本机解决方案放在 Web 应用程序中,除非您想将其包装在 Cordova 类型的混合解决方案中,在这种情况下,您可能会在 Webview 版本