我希望把我的用户群分成10个组,展示10个不同的UI,看看他们对它的感觉如何。
因此,每个用户组总是有单一类型的UI。
也就是说,假设我有10k用户,当我推出我的下一个版本时,当用户安装时,我将显示1000个用户1 UI和另一个1000个用户1 UI,就像所有10K用户一样。
我知道这可以通过AB测试框架来完成。
基本上,我想在应用程序启动时调用一个API,它必须在1到10之间返回值,然后我可以将它存储在我的密钥链中,下次当应用程序启动时,我将查看它是否已经在密钥链中,并且我不会调用该API。
因此,基本上,API将知道有多少请求已经出现,并且它将分割并发送正确的值。
因此,基于键链中的值,我将显示不同的UI,在这里AB测试框架的工作将给我1到10的API部分。
有这么多AB测试框架可用的online.But,我找不到适合我的需要的任何框架。
任何帮助都是非常感谢的!
发布于 2018-06-27 16:40:42
想象一下,在没有提交新版本的情况下,更改iOS应用程序中的字体、颜色或一些值。使用远程配置非常容易。这个教程将教您A/B测试,但是在A/B测试之前,我建议您查看一下远程Config。
发布于 2018-06-27 17:04:57
最好的方法是将用户划分为数据库中的组,让登录API或其他API返回一些标志来指示每个用户属于哪个组,您可以相应地显示UI。
但如果这不可能
然后,最简单的方法是在1-10之间生成一个随机数,并将其保存在密钥链中,并为其显示一个特定的UI,以便下次启动应用程序时,您可以查找密钥链中的值,如果不存在,则可以创建一个新的随机值,并以keychain.This的方式存储它,您将始终为该用户显示相同的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测试框架,但是如果它要在企业规模上实现,他们可能会为此收取一些费用。
如果我遇到任何这样的框架,按照您的要求单独提供这个特定的功能,我会在这里更新它。
发布于 2018-07-05 13:54:36
我想把这个答案归功于这个帖子,因为他已经指出了、FireBase、远程Config、和A/B测试。
正如提问者所要求的那样,我将解释实现这一目标所涉及的步骤。
服务器上的配置
E 265,然后显示E 166变体部分E 267在应用程序中集成
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;
}
@end5.在应用程序委托didFinishinglaunchoptions中调用类
RcValues *Obj=[RcValues sharedInstance]; 这将下载ABtesting的键值。
6.使用下面的代码将AB测试密钥从firebase获取到应用程序
self.flavourNumber.text=[FIRRemoteConfig.remoteConfig
configValueForKey:@"ABTestVariationType"].stringValue;根据键值,您可以根据需要显示不同的UI。
Firebase将负责发送正确的值,您不必担心自己将用户分成组。
P.S
请按照下面的教程获得更详细的信息--这只是一个摘要,当我有空闲时间让它更容易理解时,我将尝试总结或添加更多的图片,如果可能的话,我将尝试在github中添加示例项目并链接到这里。
https://stackoverflow.com/questions/50972365
复制相似问题