首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS中进行简单AB测试

如何在iOS中进行简单AB测试
EN

Stack Overflow用户
提问于 2018-06-21 15:32:06
回答 3查看 6.1K关注 0票数 11

我希望把我的用户群分成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,我找不到适合我的需要的任何框架。

任何帮助都是非常感谢的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-27 16:40:42

想象一下,在没有提交新版本的情况下,更改iOS应用程序中的字体、颜色或一些值。使用远程配置非常容易。这个教程将教您A/B测试,但是在A/B测试之前,我建议您查看一下远程Config。

票数 5
EN

Stack Overflow用户

发布于 2018-06-27 17:04:57

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

但如果这不可能

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

这种分割方法并不是100%的精确,但它足够接近,我想说。

arc4random_uniform

代码语言:javascript
复制
- (NSInteger)randomNumberBetween:(NSInteger)min maxNumber:(NSInteger)max
{
    return min + arc4random_uniform((uint32_t)(max - min + 1));
}

如果你对这些随机数进行了10000次抽样,你可以看到每个数字都是900-1000次,这是9-10%,并且足够接近。

代码语言:javascript
复制
 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测试框架,但是如果它要在企业规模上实现,他们可能会为此收取一些费用。

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

票数 7
EN

Stack Overflow用户

发布于 2018-07-05 13:54:36

我想把这个答案归功于这个帖子,因为他已经指出了、FireBase、远程Config、A/B测试

正如提问者所要求的那样,我将解释实现这一目标所涉及的步骤。

服务器上的配置

  • 访问https://console.firebase.google.com/并使用您的google帐户登录。
  • 选择创建项目并单击iOS
  • 应用程序id昵称中输入键,然后单击注册应用程序
  • 它将显示到GoogleService-Info.plist下载的链接,然后将其拖放到项目中
  • 选择Next
  • 它将显示您的,运行您的应用程序来验证安装,您可以选择,跳过这个步骤,
  • 从登陆页面中选择远程配置
  • 选择Add变量并输入您选择的变量名,但我输入ABTestVariationType并保留值为空,然后选择发布更改
  • 从侧栏中选择A/B测试,然后单击创建实验,然后选择远程配置
  • 在即将出现的弹出中,输入您选择的名称,作为A/B测试,POC输入一些关于它的描述,这是可选的。
  • 在目标用户中,选择应用程序id,在目标用户的百分比中,选择100%,然后单击NextE 265,然后显示E 166变体部分E 267
  • 在“变体”部分中,将有一个名为“控件组”的通用类别,默认加载50%,以及一个50%已填充和空框的变体框,您可以在其中输入任何名称,但我将输入变体2。现在,单击“添加一个参数”8次,您可以看到每个变体都有10%的名称,并将所有变体命名为所有变体,我将命名变型3,变体4到变体10。
  • 在“相同变体”部分中,单击“从远程配置添加参数”。 现在,您可以看到除了每个变体之外,还出现了一个框,parameter.You可以输入唯一的值来识别每种口味,我将输入第一个变量的值1和第二个变量的值2,就像这样,我将为最后一个变量输入值10,然后单击Next
  • 然后目标部分出现,您可以选择其中之一,但我会选择“保持时间(15+) days”,然后单击“Review”,然后单击“start试验”,并在提示下再次选择start

在应用程序中集成

  1. 在项目中添加以下吊舱 pod 'Firebase/Core‘pod 'Firebase/RemoteConfig’
  2. 拖放在服务器配置期间下载的GoogleService-Info.plist。
  3. 使用以下锅炉板代码启动消防基地 @import;-(BOOL)应用程序:(UIApplication*)应用程序didFinishLaunchingWithOptions(NSDictionary *)launchOptions { FIRApp配置;返回是;}

4.有类RcValues,这是项目中的另一个锅炉板代码。

代码语言:javascript
复制
     #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.在应用程序委托didFinishinglaunchoptions中调用类

代码语言:javascript
复制
    RcValues *Obj=[RcValues sharedInstance]; 

这将下载ABtesting的键值。

6.使用下面的代码将AB测试密钥从firebase获取到应用程序

代码语言:javascript
复制
    self.flavourNumber.text=[FIRRemoteConfig.remoteConfig
    configValueForKey:@"ABTestVariationType"].stringValue;

根据键值,您可以根据需要显示不同的UI。

Firebase将负责发送正确的值,您不必担心自己将用户分成组。

P.S

请按照下面的教程获得更详细的信息--这只是一个摘要,当我有空闲时间让它更容易理解时,我将尝试总结或添加更多的图片,如果可能的话,我将尝试在github中添加示例项目并链接到这里。

防火基础.教程.ios-ab-测试

防火墙-远程-配置教程-for-ios

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50972365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档