Push notification 使用服务工作者和推送通知获取后台地理位置的Web应用程序

Push notification 使用服务工作者和推送通知获取后台地理位置的Web应用程序,push-notification,geolocation,service-worker,Push Notification,Geolocation,Service Worker,我正在寻找一种解决方案,定期(每1分钟)获取移动浏览器上的地理位置。我做了一些研究,了解到在后台获取地理位置(当手机被锁定或webapp未激活时)是不可能的。在前台,它工作正常 我正在制作一个web应用程序,从中获取用户位置并将其发送到服务器。一切正常,直到用户锁定其手机为止。我尝试了很多解决方法: setInterval用于获取地理位置,在前台工作正常,但在后台失败 使用cordova将我的web应用程序转换为Android,但也存在同样的问题 在android上使用了这个插件 在前景和背

我正在寻找一种解决方案,定期(每1分钟)获取移动浏览器上的地理位置。我做了一些研究,了解到在后台获取地理位置(当手机被锁定或webapp未激活时)是不可能的。在前台,它工作正常

我正在制作一个web应用程序,从中获取用户位置并将其发送到服务器。一切正常,直到用户锁定其手机为止。我尝试了很多解决方法:

  • setInterval用于获取地理位置,在前台工作正常,但在后台失败
  • 使用cordova将我的web应用程序转换为Android,但也存在同样的问题
  • 在android上使用了这个插件
    • 在前景和背景中都能很好地工作
    • 但同样的插件在iPhone上不起作用(我没有测试它,在继续之前我在谷歌上搜索过)
    • 仅仅在一个平台(android)支持下发布我的应用程序是不好的,因此这种变通方法对我来说也失败了
  • 我也考虑过在我的web应用程序中使用serviceworkers,但这个问题似乎在后台仍然存在

    我有另一个想法,但在投入时间之前,我想知道是否有人已经尝试过了

    我了解了推送通知:

  • Web应用客户端注册以推送通知
  • 它发出 我的服务器的订户对象
  • 使用此对象的服务器发送 发送到推送通知服务器的消息
  • 推送通知服务器 向我的web应用客户端发送消息
  • 我的web应用程序客户端唤醒我的 服务工作人员在短时间内显示通知消息
  • 根据谷歌文档: 注:在当前的实施中 对于Chrome,每当我们收到推送消息而没有 网站在浏览器中可见,我们必须显示通知。就是, 我们不能在用户不知道的情况下默默地做这件事。如果我们不 显示浏览器自动创建的通知以允许 用户知道应用程序正在后台工作

  • 在我的应用程序运行之前,我不介意向用户显示永久通知。我已准备好进行这种权衡

    现在,我的问题是,在第5步,当我叫醒服务人员**时,我是否有可能调用可能在后台运行的main.js(main web app)来获取地理位置并将其更新到我的服务器

    是否有人已尝试此解决方案,成功或失败,请通知


您可以尝试使用页面可见性Api,该Api侦听浏览器选项卡的可见性更改是否隐藏或切换到其他选项卡(在浏览器的情况下)。对于手机来说,这只是一次尝试

src:

或者你也可以看看这个答案


我这里没有解决方案;(但在后台运行或启用锁屏时关闭地理定位的原因是为了避免耗尽电池电量。但同时,逐圈方向如何与锁屏配合使用?嗯,本地(此时)的好处之一)。网络上的音频和视频也存在类似的问题。这就是为什么媒体播放API很重要,因为它可以在锁定屏幕后工作。浏览器在将其推向市场时必须解决各种法律/信任问题。你找到解决方案了吗?我需要一个类似的功能,我不知道我想找到一个解决办法。还没有什么…@ZerokHi@savaratkar。我试着提出你的建议,但没有成功:服务人员的
导航器
似乎没有
地理位置
:哦,好的。谢谢你的努力!莱昂纳多