背景地理位置服务工作线程 - 当Web应用程序重新获得焦点时的onMessage事件顺序

19

要获取完整细节和更详尽的描述,请参阅W3C Service worker 问题

这是我的HTML5 Web App情景: -

  • 我将Web App放入口袋,在骑行时不再使用
  • 当我骑行时,我的Service Worker(s)定期接收GPS更新,并调用postMessage()将它们排队,最终在Google地图上绘制
  • 骑行结束后,我点了一杯啤酒,并将Web App前台化,以便查看我去过哪些地方,平均速度等等。

我的问题如下:

1) 在所有由ServiceWorkers触发的消息事件之前还是之后,焦点事件是否会触发?

2) 如果先触发Focus,那么设置一个setTimer(0,backlogCleared)是否足以作为启发式机制来建立“所有后台处理都已完成”?

3) 是否有任何方法可以折叠postMessage()消息(即Firebase的推送通知),使得只接收到最后/当前的消息?

4) 如果您对授权后台地理位置感兴趣,请在W3C上添加相关权限的想法。

祝愉快的骑行、跑步、航行、开车!


2
另一个选择,如果您有一个中央服务器(用于车队管理等),则是不要向主线应用程序发送postMessage,而是直接将位置更改的XHR / Fetch发送到服务器,然后当Web应用程序获得焦点时,它可以只需调用服务器+/- getCurrentLocation()。 - McMurphy
2
你已经更新了带有GPS的服务工作者吗?我一直在寻找关于地理围栏和通过服务工作者进行更新的资料。你是我遇到的第一个实际执行此操作的账户,我想问问你是否可以分享你的资源。你是使用本地功能、插件还是第三方资源? - jay
@Jay,我这个问题中的那部分可能只是一厢情愿或者"假新闻",我很遗憾:-(。不过我的问题仍然适用于使用postMessage()为客户端排队消息以在再次进入前台时执行任何服务工作者。赏金仍然适用,但我在这里发布的真正动机是提高人们对服务工作者问题745的认识。https://github.com/w3c/ServiceWorker/issues/745#issuecomment-304168724 请在那里添加您的评论/愿望。让我们现在将后台地理位置信息引入Usurper Web应用程序! - McMurphy
请查看这个小型Web应用程序。https://drive.google.com/open?id=0B7Rmd3Rn8_hDNW1zSWRoXzBTclU(其中有一个aaa_readme.txt),其中包含一些示例/演示代码。 - McMurphy
1
@martinjn,我可以问一下为什么您在8个月后关闭了这个主题吗? - McMurphy
1个回答

11
我的Brotkrumen终极Web应用程序现已完成。所有源代码/图像文件可在https://drive.google.com/open?id=0B7Rmd3Rn8_hDNW1zSWRoXzBTclU找到。
最重要的设计/建议规格更改是TravelManager订阅现在应该是客户端特定的。TravelEvent必须包含预期的客户端ID(TravelEvent.source.id)。这意味着UA必须监视和过滤每个客户端的GeoLocation更新。我还添加了新的演示功能,例如按“到达”按钮时显示的旅行摘要。可以通过按“地图旅行”或“重新播放”来将旅行回放到Google Maps上。如果旅行的上一个和下一个地理位置更新都在地图窗口中可见,则可以通过CSS过渡实现平滑标记移动。
请帮助后台GeoLocation起步,并帮助Web应用程序与原生应用程序竞争!
如果我的TravelManager解决方案设计有问题,请告诉我。吹毛求疵!

所以在后台无法使用位置更新吗?因为我在自述文件中读到它只能在前台使用。 - jojoclt
很遗憾但却是事实:除非W3C、IETF或浏览器供应商认可我的TravelManager解决方案,否则我们注定要成为本地应用程序的二等公民。 - McMurphy
我在想,如果有人开发了一款可以实现这个功能的浏览器,要将其发布到应用商店会有多难。 - ihor.eth
有一个新的API正在讨论中,名为“地理跟踪”,它将允许后台跟踪。但是这个问题需要投票。如果您有兴趣,请访问此处: https://bugs.chromium.org/p/chromium/issues/detail?id=898536 - Robert Wildling
那个“讨论”走了和其他所有讨论一样的路线 :-( - McMurphy
请为 https://github.com/w3c/geolocation-api/issues/74 做出贡献。 - McMurphy

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