灰度与条件下发

TinkerPatch 平台支持补丁的灰度与条件下发。

灰度

在后台发布补丁时可以选择灰度下发,分为按比例灰度与按人数灰度。

按比例灰度

若选择按比例灰度,这个补丁就会按选定的百分比只对这个比例的用户起作用。例如选择灰度 30%,那这个补丁脚本只会在所有接入的设备中随机挑选 30% 的设备生效。

灰度发布后后续可以修改这个灰度值,便于逐渐增加灰度数量,直到全量发布。

按人数灰度

按人数灰度可以指定补丁对多少个用户生效,超过设置的人数后不会再生效。例如设置灰度1000人,在1000台设备加载补丁后,后续其他设备都不会加载这个补丁。灰度人数可以修改增加,但不能减少,可以逐渐增加灰度人数,直到全量发布。

条件下发

在后台发布补丁时可以选择条件下发,然后填入条件语句,只有满足条件的设备才会执行这个补丁,条件语句由 key/value/运算符组成,示例:userId==10000876, sdk>19&&isMale==1

条件语句里用到的 key/value 需要事先在 APP 里通过 setPatchCondition: 设置,支持设置多个字段,默认已经内置wifi、sdk、brand、model、cpu等多个字段:

这样在下发补丁时填入条件 userId==1000876 后,这个补丁就只对这个用户生效,如果填入 isMale==0 则对这个用户不生效

我也可以填入条件 channel==yingyongbao 后,这个补丁就只对应用宝这个渠道有效

条件语句规则

  1. 支持符号 && || == != >= <= > <,意思跟程序里一样。
  2. 用比较符号时 >= <= > < 会把值转为数值进行对比。例如 userId>200000,即使客户端调用 +setupUserData: 接口时设置的 userId 字段是字符串,也会转为数值进行对比。
  3. 使用 == != 符号时,会以字符串形式判断是否相等,例如 1.0 == 1 结果是 NO。
  4. 等式的值不需要引号,字符串也不需要,例如:location!=guangdong
  5. 支持多个条件,例如:userId!=31242&&location==guangdong&&name==tinker
  6. 若多个条件里同时有 &&||&& 的优先级较高。例如 userId<200000||location==guangdong&&name==tinker,会先分别计算 userId<200000location==guangdong&&name==tinker 的结果,再进行 || 运算。

条件更新规则

在发布补丁时用条件下发后,发布后可以不断修改条件,但在之前已经命中了条件执行了补丁的设备,不会因为修改条件后变为不命中,也就是说已经命中过条件执行了补丁的设备,不会再被条件的更新影响。举个例子:

在发布补丁1时设条件为 userId==1000876,某设备A设置了 {"userId": "1000876"} 命中了这个条件,执行了这个补丁1。设备B设置了 {"userId": "2000876"} 没有命中。

接着在后台修改条件为 userId>=2000000 ,设备A并不符合这个条件,但因为之前的条件命中过,所以设备A不会再受这个改变影响,继续执行补丁1。设备B命中了这个条件,也执行了补丁1。

此外若想撤销条件全量发布,提交空条件即可。

内置信息

默认已经内置wifi、sdk、brand、model、cpu等多个字段,

  1. 若只想发给当前是 wifi 连接的用户可以使用:wifi==1
  2. 若只想发给Dalvik用户,可以使用 sdk<=19
  3. 其他类同...

注意事项

  1. setPatchCondition: 接口要在 fetchPatchUpdate: 接口之前调用。
TinkerPatch.com © 2017 Github开源 | 用户协议 |联系我们