我希望将用户群划分为10个组,并显示10个不同的UI,并了解他们的感受。
因此每个用户组将始终具有单一类型的UI。
也就是说,我有1万个用户,当我在安装用户时推出下一个发行版时,将显示1000个用户1个UI和另一个1000个用户1个UI,如所有1万个用户。
我知道可以借助AB测试框架来做到这一点。
基本上,我想在应用启动时调用一个API,并且它必须返回1到10之间的值,然后可以将其存储在钥匙串中,下次启动应用时,我将查看它是否已存在于钥匙串中,并且我不会调用该API。
因此,基本上,API会知道有多少个请求,它将进行划分并将正确的值发送回去
因此,根据钥匙串中的值,我将显示不同的UI,并且AB测试框架的工作将为我提供价值1到10的API部分。
网上有很多AB测试框架可用。但是我找不到适合我需要的框架。
感谢您的帮助!
答案 0 :(得分:5)
最好的方法是将用户分成数据库中的组,然后让登录API或其他API返回一些标志以指示每个用户所属的组,然后您可以相应地显示UI。
但是如果不可能的话
然后,最简单的方法是在1-10之间生成一个随机数,并将其保留在钥匙串中,并为其显示一个特定的UI,以便下次启动应用程序时,可以在钥匙串中查找值,以及是否需要在那里,您可以创建一个新的随机值并将其存储在钥匙串中。这样,您将始终为该用户显示相同的用户界面。
这种拆分方法并非100%准确,但我想说的足够接近
- (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测试框架,但是如果要在企业规模中实施,他们可能会为此付费。
如果我遇到了任何一个仅提供此特定功能的框架(如您所要求的,我将在此处进行更新)。
答案 1 :(得分:3)
想象一下在不提交新版本的情况下更改iOS应用程序中的字体,颜色或某些值。使用远程配置非常简单。 tutorial将教您A / B测试,但是在A / B测试之前,我建议您先了解一下Remote Config。
答案 2 :(得分:2)
我想将此答案归功于post,因为他指出了 FireBase远程配置和 A / B测试。>
正如提问者所问,我将解释实现该目标所涉及的步骤。
访问https://console.firebase.google.com/并使用您的登录 google帐户。
选择创建项目,然后单击 iOS
键入应用ID 和昵称,然后单击注册应用
它将显示指向 GoogleService-Info.plist 下载的链接,然后将其拖放到项目中
选择下一步
它将向您显示运行您的应用以验证安装,您可以选择跳过此步骤
从登录页面选择远程配置
选择添加变量并输入您选择的变量名称,但我输入 ABTestVariationType 并将值保留为空,然后选择发布更改
从侧边栏中选择 A / B测试,然后单击创建实验,然后选择远程配置
在随后出现的弹出窗口中,输入您选择的名称,作为 A / B测试POC 输入有关它的一些描述,但这仍然是可选的
在目标用户中选择您的应用ID ,并在目标用户百分比中选择 100%< / strong>,然后点击下一步,它将显示变体部分
在“变体”部分中,将有一个名为 Control group 的常规类别,默认情况下已加载50%,并填充了50%的变体框和空框,您可以输入任何名称这样,我将输入变体2。现在单击添加参数8次,现在您可以看到每个变体具有10%的名称,并将所有变体命名,然后将变体3,变体4命名为变体10。
在同一变体部分中,从远程配置
中单击添加参数。
现在您可以看到每个变体参数旁边都出现一个框,您可以输入唯一的值来识别每种口味。我将为第一个变体输入值1,为第二个变体输入值2,就像我最后一个输入值10变体,然后单击下一步
然后出现目标部分,您可以选择其中之一,但我会选择保留(15+)天,然后点击查看,然后点击开始实验,然后在出现的提示中,再次选择开始
在您的项目中添加以下Pod
pod 'Firebase/Core'
pod 'Firebase/RemoteConfig'
拖放在服务器配置期间下载的 GoogleService-Info.plist
使用以下样板代码启动Firebase
@import Firebase;
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions(NSDictionary *)launchOptions
{
[FIRApp configure];
return YES;
}
4。具有类 RcValues ,这是项目中的另一个样板代码
#import "RcValues.h"
@import Firebase;
@implementation RcValues
+(RcValues *)sharedInstance
{
static RcValues *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[RcValues alloc] init];
});
return sharedInstance;
}
-(id)init{
self=[super init];
if(self)
{
[self AcivateDebugMode];
[self LoadDefaultValues];
[self FetchCloudValues];
}
return self;
}
-(void)LoadDefaultValues
{
[FIRRemoteConfig.remoteConfigsetDefaults:
@{@"appPrimaryColor":@"#FBB03B"}];
}
-(void)FetchCloudValues
{
NSTimeInterval fetchInterval=0;
[FIRRemoteConfig.remoteConfigfetchWithExpirationDuration:
fetchInterval completionHandler:^(FIRRemoteConfigFetchStatus
status, NSError *_Nullable error)
{
NSLog(@"error:%@",error);
[FIRRemoteConfig.remoteConfig activateFetched];
}];
}
-(void)AcivateDebugMode{ //
FIRRemoteConfig.remoteConfig.configSettings=debugSettings;
FIRRemoteConfigSettings *config = [[FIRRemoteConfigSettings alloc] initWithDeveloperModeEnabled:YES];
FIRRemoteConfig.remoteConfig.configSettings=config;
}
@end
5。在appdelegate didFinishinglaunchoptions中调用该类
RcValues *Obj=[RcValues sharedInstance];
这将下载用于ABtesting的键值
6。使用下面的代码将AB测试密钥从firebase获取到您的应用程序
self.flavourNumber.text=[FIRRemoteConfig.remoteConfig
configValueForKey:@"ABTestVariationType"].stringValue;
根据键值,您可以根据需要显示不同的UI。
Firebase将负责发送正确的值,您不必担心自己将用户分为几类。
请按照以下教程获取更多详细信息,这只是一个摘要,如果有空闲时间,我将尝试总结或添加更多图片,以便于更容易理解,我将尝试在github中添加示例项目,在这里链接