首页 > 解决方案 > 如何在 iOS 中进行简单的 AB 测试

问题描述

我希望将我的用户群分成 10 个组并展示 10 个不同的 UI,看看他们对此有何感受。

所以每个用户组总是有单一类型的 UI。

即假设我有 10k 用户,当我在用户安装时推出下一个版本时,我将显示 1000 个用户 1 UI 和另外 1000 个用户 1 UI,就像所有 10K 用户一样。

我知道这可以在 AB 测试框架的帮助下完成。

基本上我想在应用程序启动时调用一个 API,它必须返回 1 到 10 之间的值,然后我可以将它存储在我的钥匙串中,下次启动应用程序时,我会查看它是否已经在钥匙串中,我不会调用 API。

所以基本上API会知道有多少请求已经到来,它会划分并发送正确的值

所以基于钥匙串中的价值,我将展示不同的、不同的 UI,在这里 AB 测试框架的工作将给我价值 1 到 10 的 API 部分。

网上有很多 AB 测试框架。但是我找不到任何适合我需要的框架。

任何帮助表示赞赏!

标签: iosmobile-applicationab-testingabtest

解决方案


最好的方法是将用户分成数据库中的组,让登录 API 或其他一些 API 返回一些标志来指示每个用户属于哪个组,您可以相应地显示 UI。

但如果那不可能

然后最简单的方法是生成一个介于 1-10 之间的随机数并将其保存在钥匙串中并为其显示特定的 UI,以便下次启动应用程序时,您可以查看钥匙串中的值,如果不存在则您可以创建一个新的随机值并将其存储在钥匙串中。这样您将始终为该用户显示相同的 UI。

这种拆分方法不是 100% 准确,但我会说它足够接近

arc4random_uniform

- (NSInteger)randomNumberBetween:(NSInteger)min maxNumber:(NSInteger)max
{
    return min + arc4random_uniform((uint32_t)(max - min + 1));
}

如果您对这些随机数进行 10000 次抽样,您可以看到每个数字出现 900-1000 次,即 9-10%,并且足够接近

 for(int i=0;i<10000;i++){
      NSLog(@"random:%ld",[self randomNumberBetween:1 maxNumber:10]);
    }

当前时间的秒数

您可以获取当前日期和时间的秒数,如果秒数介于 1-6 之间,则您可以将值 1 保存在钥匙串中,对于 7-12,您可以将值 2 保存在钥匙串等中。54-60 您可以保留值 10在钥匙串中。

其他

您可以考虑根据地理、国家或时区划分用户,这样做也有自己的坑。

像这样,您可以设计自己的策略来拆分用户

但如果上述建议都不符合您的标准,那么最好的方法是寻找第三方 AB 测试框架,但如果要在企业规模上实施,他们可能会为此收取一些费用。

如果我遇到任何这样的框架,只要按照你的要求提供这个特定的功能,我就会在这里更新它。


推荐阅读