【问题标题】:Knowing if the app is running in a testing environment了解应用程序是否在测试环境中运行
【发布时间】:2012-06-01 05:17:01
【问题描述】:

有没有办法知道程序是否在开发环境中运行?我正在使用 Flurry Analytics 并希望向其传递不同的应用程序 ID,这样数据就不会在开发过程中被我的测试弄脏。

我想要的是这样的:

Boolean isDevEnv = .... (is this a test in the simulator or device,
                         OR is it a real user that downloaded the 
                         app through the app store?)
if (isDevEnv)
  [FlurryAnalytics startSession:@"firstAppId"];
else
  [FlurryAnalytics startSession:@"secondAppId"];

需要明确的是,this 不是我想要的,因为我使用真实设备和模拟器进行测试。

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

    好吧,这似乎是 Xode 默认完成的,在项目的构建设置中,在 Apple LLVM compiler 3.1 - Preprocessing 下(这是在 Xcode 4.3.2 中,以供将来参考),一个名为 DEBUG 的设置填充了值1.

    所以,我真的不需要做任何事情,只需在代码中执行此操作(在我的例子中是 AppDelegate 的 didFinishLaunchingWithOptions 方法):

    [FlurryAnalytics startSession:DEBUG ? @"firstAppId" : @"secondAppId"];
    

    【讨论】:

      【解决方案2】:

      在构建设置中,您必须根据构建环境设置标志。

      然后,使用#ifdef 和#define 设置appid。

      #ifdef DEBUG
      #    define APPID ...    
      #else
      #    define APPID ...
      #endif
      

      【讨论】:

      • 我可能做错了一些愚蠢的错误:在 Targets 中,我选择了唯一一个,然后转到 Build Settings 选项卡,然后是 Add Build Setting,这会在 User-Defined 组中添加一行(我将它命名为“TESTING”),然后对于每一个(调试和发布)我点击加号,我在那里放什么值?
      【解决方案3】:

      如果您不想使用DEBUG 标志和DEBUG 环境,请创建一个新的构建配置(重复发布配置)并在构建设置预处理器宏中添加一个 FlurryAnalytics 标志。在您的代码中检查if(FlurryAnalytics)。在 XCode 中创建一个使用此新版本构建配置创建 ipa 的新方案。

      【讨论】:

        【解决方案4】:

        在您的构建设置中,为 App Store 发布版本定义一个新标志。然后使用#ifdef在编译时确定使用哪个appid。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-23
          • 1970-01-01
          • 2017-05-27
          • 1970-01-01
          • 2018-12-11
          • 2023-04-05
          • 2019-11-22
          相关资源
          最近更新 更多