无线更新的间隔计时器与数据库字段?

Interval timer vs database field for over-the-air updates?

我想为用户提供 OTA 更新。我的应用程序在数据库上使用实时侦听器,所以我的问题是:

  1. 设置一个 15 分钟的间隔计时器以检查是否有可用更新(需要网络呼叫和长时间计时器)

  2. 指定何时需要更新的每个用户的数据库字段(每个用户 2 次写入调用)

  3. 检查应用程序何时启动或前台(后者可能在单个会话中多次出现,必须添加不应期)

  4. 一些混合或其他解决方案

...或者当最终用户体验并没有真正受到我选择的任何选项的影响时,我可能过于担心某些最佳实践/优化解决方案?

我的解决方案基本上是选项 3 的实现。如果用户不断地进出应用程序,它会在上次检查更新后等待 15 分钟再次检查。

  • 一个 useRef 时间变量,用于存储应用最后一次被前台化的时间
  • 检查更新的更新函数
    • 如果可用:获取更新并重新加载应用程序
  • 用于在启动时检查更新的 useEffect
  • 监听 AppState 变化的 useEffect
    • 如果应用程序在前台运行 && time.current + 15000 < Date.now():检查更新