Firestore Remote Config随机分配参数值能否在多个关联应用间保持一致?
结论先行
默认状态下无法做到同一用户在两款应用间的随机分配参数值一致。
原因解释
Firebase Remote Config 自带的默认「User in random percentile」规则,是基于客户端生成的匿名实例ID/设备ID计算百分位区间,Chrome扩展程序和Web应用属于两个独立的客户端运行上下文,默认生成的匿名ID完全独立,因此同一用户在两个端访问同个参数时,会得到不同的分配结果。
实现跨端一致的配置方法
- 方法1:基于统一用户ID分配(推荐,适用于有账号体系的场景)
- 首先确保两款应用使用同一套账号体系,同一用户登录后拿到的唯一用户UID完全相同
- 在两个端的SDK初始化逻辑中,用户登录成功后、拉取Remote Config参数前,调用
setUserId()方法将当前用户的统一UID传给Remote Config SDK - 回到Remote Config后台,修改原有的百分位条件:将条件类型从默认的「User in random percentile」替换为「User in random percentile (by user ID)」,保持50%的分配比例不变
- 保存并发布配置后,同一用户无论在哪个端登录,都会基于同一个UID计算百分位,分配到的参数值完全一致
- 方法2:基于自定义稳定ID分配(适用于无账号体系的场景)
- 统一生成一个随机唯一ID,存储到用户浏览器的同源localStorage中:如果你的Chrome扩展是注入到Web应用同域页面的内容脚本,可以直接读写同域的localStorage实现ID共享;如果是独立的扩展页面,可以通过扩展的消息传递能力和Web应用做ID同步
- 在两个端的SDK中都调用
setUserProperty()方法,将这个同步好的ID作为自定义用户属性传给Remote Config - 在Remote Config后台基于这个自定义用户属性配置百分位分割规则,即可实现同一浏览器环境下的用户跨端分配一致
注意事项
必须保证用户ID/自定义ID的设置时机早于Remote Config的参数拉取请求,否则拉取到的参数还是基于默认匿名ID的分配结果,出现跨端不一致的问题。
内容的提问来源于stack exchange,提问作者lmao12
相关产品推荐
相关产品推荐

