我想创建一个渐进式Web应用程序,在该应用程序的某个流程中,我希望native android app
能够正常运行,因为需要一些硬件访问(USB设备)。
所以我只想让网络应用程序通过一些参数重定向到android native app
。在Android app功能结束后,捕获的数据将再次通过控制应用程序流程发送回Web。
如何实现这一目标?
我使用的是native SDK
,因此无法将其放入网络应用中。
如果用户尚未安装native app before
,将如何处理?必须在用户的移动设备中安装native app
可以这样,Android应用程序代码将通过网络应用程序运行(不在用户手机中安装本机应用程序)?如果可能,这会是一个很棒的解决方案吗?
答案 0 :(得分:2)
根据您尝试访问的USB硬件及其在WebUSB API - 目标操作系统/浏览器中的支持,您可能会或可能无法直接在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进行通信。虽然可以通过URL中的params进行Web缩进进行通信。但你能做的是有限的。当您需要的不仅仅是简单的刺痛参数时,WebSockets可能是更好的选择。在链接的githug代码中,您可以删除条形码扫描逻辑并替换为USB功能或任何其他硬件/本机API访问。如果您可以确保用户安装本机应用程序或在未安装本地应用程序时提示安装,则Websockets解决方案+安装本机应用程序是很好的。如果您想支持在浏览器中运行的Web应用程序以及已安装的Web应用程序(使用添加到主屏幕),这将是更好的选择
您不能将此原生解决方案放在Web应用程序中,除非您想将其包装在Cordova类型的混合解决方案中,您可能会在Webview版本<40的旧设备中放弃PWA服务工作者的好处。如果您希望通过应用程序商店将PWA应用程序作为程序包发送并且无法/首选运送两个应用程序(本机+ Web),这将是一个不错的选择。