在 android 应用中切换 wifi 后 Firebase 数据未更新

Firebase data is not updating after switching the wifi in android app

我们正在构建一个应用程序,我们在应用程序中计算并存储用户 interacts/opens 使用应用程序的次数。 当应用进入前台时,我们会更新 firebase 上的计数器。

我们在使用 Samsung Galaxy S4 时遇到一个问题,当用户在 WIFI 网络之间切换时应用处于 运行,从第二个网络切换开始,Firebase 上没有数据更新。在任何其他 Android/iOs 移动设备上都没有发现此问题。

问题解释:

假设有两个 WIFI 网络 A 和 B

  1. 用户连接到 WIFI 网络 A 并打开了应用程序。我们在 firebase 中增加一个计数器 'activity'。说 'activity' 值最初是 0,现在变成 1。
  2. 当应用程序进入后台模式并进入前台时,我们再次增加 firebase 上的计数器 'activity',因此 'activity' 变为 2。只要用户在 WIFI 网络 A 中。递增计数器 'activity' 工作正常。
  3. 当用户连接到另一个 WIFI 网络(比如 B)并打开应用程序时,会触发计数器 'activity' 递增操作,但数据不会存储在 firebase 上。 (firebase 上计数器 'activity' 的值保持为 2)
  4. 现在,当用户切换回 WIFI 网络 A,并将应用程序带到前台时,增量操作会将值增加两次,因此计数器 'activity' 变为 4。在 firebase 上,值从 2 跃升至 4,但同时用户在 WIFI 网络 B 上的数据未更新,意味着重新连接到网络 A 会触发两次增量操作,这会使计数器 'activity' 的值变为 4.

当 Firebase Android 客户端失去连接时,它会保留所有写入操作的队列。当它再次联机时,它会应用那些写入操作。

在您的情况下,当您在网络 B 上时,Firebase 似乎无法建立连接。因此在您的第 3 步中,写入操作最终被排队。

然后在第 4 步将它应用到服务器上,之后下一个写入操作再次增加 activity 值。