ios - 如何在 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 测试框架。但是我找不到任何适合我需要的框架。
任何帮助表示赞赏!
解决方案
最好的方法是将用户分成数据库中的组,让登录 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 测试框架,但如果要在企业规模上实施,他们可能会为此收取一些费用。
如果我遇到任何这样的框架,只要按照你的要求提供这个特定的功能,我就会在这里更新它。
推荐阅读
- ffmpeg - 如何在不创建新文件的情况下创建 m3u8 字节范围播放列表
- javascript - 如何根据选择器查询检查 javascript DOMElement
- sql - SQL - JOIN 与 IN 性能当 IN 是实际的值列表(而不是查询)时
- ios - ios AVPlayer 按钮操作未触发
- javascript - 在负责任的移动视图中,锚标记不会重定向到 div
- c# - Xamarin Forms MasterDetailPage 动态更改主
- maven - 从 Grails 2.4.4 安装中排除 httpcore 库并使用 Maven 的
- loops - 如何在eclipse中循环开关
- c# - 将 var 从一种方法用于另一种方法
- r - 重复测量时间方差分析