一个渐进式Web应用程序(PWA)能否在移动设备上运行后台服务以从硬件(加速度计,GPS等)获取数据?

40
我看到我们可以使用 https://whatwebcando.today/ 来检查移动浏览器的功能,但在后台运行时能否查询硬件API呢?
我的意思是... 使用PWA,我是否能够构建一个应用程序,在后台运行时获取硬件信息,就像Android上的Octo U一样,并将该信息发布到Web服务器?

1
嗨,Rafael。只是想澄清一下,您的目标是开发一个PWA,其任务是从设备传感器中检索数据,并且即使浏览器在后台运行,它也应该继续运行吗? - AL.
@AL。没错,AL。 - Rafael Oliveira
1
由于PWA领域在过去的半年里发生了很多事情,是否有任何相关新闻?我想使用PWA在待机模式下访问移动设备的地理位置,并将其发送到Web服务。 - seawave_23
1
@Nadine 我已经不再研究 PWA 了,所以我不知道所需功能的当前状态。 - Rafael Oliveira
2个回答

20

现代运行“后台”代码的方法是使用service worker,可以通过其push事件处理程序(通过传入的推送消息触发)或通过其sync事件处理程序(由先前失败的任务的自动重播触发)来实现。

目前无法从服务工作者内部访问您所询问的硬件传感器类型。


6
我能否创建一个计时器并在完全离线的情况下运行它,并使用服务工作者向用户发送通知,一旦计时器停止? - Achuth hadnoor
不,这不是一个支持的使用案例。 - Jeff Posnick
9
PWA现在可以在后台获取位置吗? - jojoclt
1
目前这是_可能的_,只是Google和Mozilla已经_决定_不提供这个功能:https://dev59.com/rVQJ5IYBdhLWcg3wQzqC#54208989 https://github.com/RichardMaher/Brotkrumen - JamesTheAwesomeDude

16

服务工作者采用事件驱动模型运行。这意味着它们只会在注册的事件发生时启动(浏览器 UI 发出网络请求、推送通知和后台同步目前为止)。 我认为您正在寻求地理围栏功能。据我所知,这是讨论要添加到 SW 模型中的内容。如果没有,那么应该考虑加入,因为对于营销目的来说非常有价值。我知道它被用于原生应用程序中,所以我认为它已经受到关注。 GPS 可以从前端访问,并且在浏览器中已经有数年的历史。但是用户需要在浏览器中加载您的站点/PWA。


你们的响应Chris只适用于移动设备,还是PWA(例如从桌面版Chrome安装)通过service worker 接收到推送通知时,在桌面上也能启动(即,如果用户已关闭,则PWA service worker是否保持后台运行)? - SBG
它们的管理方式相同,它与设备无关。 每个浏览器都处理如何启动和停止线程。但本质上它们都是相同的。 启动服务工作者所需的时间更多取决于CPU(设备硬件容量)而不是其他任何因素。在我的i7上需要100ms的操作,在普通手机上可能需要500ms。但在较慢的处理器上一切都会变慢。 - Chris Love
@ChrisLove 一旦网站在手机浏览器中加载,即使用户锁定了手机并将其放回口袋,网站是否仍然可以发送GEO位置信息?同样,如果手机上的浏览器被最小化,网站是否仍然可以访问GPS? - Zaffer
1
好久没看到你发布这个了。但据我所知,没有。 我真的希望这能够实现。这样我就可以构建一个应用程序来跟踪我的步数和锻炼,就像Google Fit一样 :) 看起来这只需要获取用户权限就可以了。有很多应用程序可以做这种事情,过去4年中我至少被要求创建一个PWA中的健身追踪器体验。 - Chris Love

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接