gpt4 book ai didi

push-notification - Web 应用程序使用 Service Worker 和推送通知获取后台地理位置

转载 作者:行者123 更新时间:2023-12-03 14:45:21 25 4
gpt4 key购买 nike

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

我正在制作一个网络应用程序,我可以在其中获取用户位置并将其发送到我的服务器。一切正常,直到用户锁定他/她的手机。我尝试了很多解决方法:

  • setInterval 获取地理位置,在前台工作正常但在后台失败
  • 使用cordova 将我的Web 应用程序转换为Android,但存在同样的问题
  • 二手 https://github.com/mauron85/cordova-plugin-background-geolocation这个安卓插件
  • 前景和背景都很好
  • 但同样的插件在 iPhone 上不起作用(我没有测试过,我在继续之前在谷歌搜索过)
  • 仅通过一个平台 (android) 支持发布我的应用程序并不好,因此这种解决方法对我来说也失败了。
  • 我还考虑为我的网络应用程序使用 serviceworkers,但似乎问题仍然存在于后台
    https://github.com/w3c/ServiceWorker/issues/745

    我有另一个解决方案,但在投入时间之前,我想知道是否有人已经尝试过。

    我了解了推送通知:
  • Web 应用程序客户端注册到推送通知
  • 它发送
    我服务器的订阅者对象
  • 我的服务器使用这个对象发送
    消息推送通知服务器
  • 推送通知服务器
    向我的 Web 应用程序客户端发送消息
  • 我的网络应用程序客户端唤醒了我的
    service worker 短暂显示通知消息
  • 根据谷歌文档:

    Note: In the current implementation of Chrome, whenever we receive a push message and we don't have our site visible in the browser we must display a notification. That is, we can't do it silently without the user knowing. If we don't display a notification the browser automatically creates one to let the user know that the app is doing work in the background.


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

    现在,我的问题是,在第 5 步,当我唤醒 service worker ** 是否有机会调用可能在后台运行的 main.js(主 Web 应用程序)**,将获取地理位置并更新它到我的服务器?

    有没有人已经尝试过这个解决方案,成功或失败,请告知。

    最佳答案

    您可以尝试页面可见性 Api,它监听浏览器选项卡的可见性更改被隐藏或切换到其他选项卡(在浏览器的情况下)。对于手机,这只是一个尝试。
    源代码:https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API
    或者你也可以看看这个答案..
    Detecting when screen is locked

    关于push-notification - Web 应用程序使用 Service Worker 和推送通知获取后台地理位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464557/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com