即使实验已经完成、数据已被清除且应用重新安装,仍然能够获取Firebase A/B测试的变体值

移动开发 2026-07-09

Firebase -> Remote Config -> A/B Tests 部分,我们有一个在146天前创建的实验。它被标记为完成,但在iOS上我们仍然看到来自该实验中定义变体的值。然后我们删除了该实验并重新安装应用。我们仍然看到来自实验变体的相同值。我们以为是缓存的问题。因此,我们等到第二天。结果仍然从实验获取值。

我在Xcode中,在 fetchfetchAndActivate 结束的那一行设置了断点,并查看了 remoteConfig 对象 -> _configExperiment 字段 -> _experimentPayloads 只有一个元素的数组。该载荷元素是一个JSON:

{
  "experimentId": "_exp_4",
  "variantId": "0",
  "experimentStartTime": "2025-11-26T15:42:41.738Z",
  "triggerTimeoutMillis": "15552000000",
  "timeToLiveMillis": "15552000000"
}

exp_4 是我们正在接收值的实验名称。开始时间与我们启动该实验的日期相同。TimeToLive (TTL) 是180天。看起来在34天后,我们就能获得非来自该实验的常规数值。

Firebase的行为是否是有意为之:在实验完成并且被删除后,仍然继续向我们发送来自实验的值?还是因为应用端的某些问题?如果是,请该如何修复?

我在 Google Groups关于此行为的讨论 中发现,似乎谷歌的一名员工表示我们不应该继续从实验接收值。

另外这里有一个 讨论,其中有人说在实验结束前用户不会离开A/B测试。但“结束”是什么意思?是等180天过去吗?

我们使用 CordovaObjective-C、插件 cordova-plugin-firebase-config,以及版本为 10.29.0 的pod Firebase/RemoteConfig

解决方案

看起来这像是Firebase的一个bug。

我们尝试做 fetch + activate,尝试做 fetchAndActivate、尝试 FirebaseInstallations.delete。都没有用。

然后我们创建了一个新实验,从中接收值,手动停止它(它进入了 'Complete' 状态),并没有等到自动达到90天。结果就起作用了。停止该实验并重新安装应用后(不确定单纯重启是否足够),我们不再从任何实验接收值(那时没有活跃的实验,所以一切都很完美)。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章