【问题标题】:Checking if the app is build as release检查应用程序是否作为发布版本构建
【发布时间】:2013-10-18 14:17:43
【问题描述】:

我必须确保应用程序不会发送设备令牌以进行推送通知,如果它是在调试中构建的,并且在发布时发送。

我可以使用此代码吗?

#if RELEASE
[SendTokenRequest sendDeviceToken:deviceToken withCompletion:nil];
#endif

显然它很难测试,它编译而不是在调试中执行,只是想确保它会在生产中执行......

【问题讨论】:

    标签: ios


    【解决方案1】:

    是的,它应该适用于您的生产案例,假设 RELEASE 是仅在发布构建步骤中创建的预处理器指令。

    我在我工作的应用程序中做了类似的事情,但使用了 DEBUG 宏代替(反转你的测试)。我还添加了#else 以确保它已登录调试。

    #ifndef DEBUG
    // Make sure this is executed in debug
    NSLog(@"Send token in production");
    #else
    // Release code
    #endif
    

    【讨论】:

    • 我认为您的示例是:` #ifndef DEBUG // 发布代码 NSLog(@"Send token in production"); #else // 调试代码 #endif ` 如果你想让#else 执行发布代码,请使用#ifdef DEBUG
    【解决方案2】:

    您可以使用您想要的标志,使用以下方法来测试您是否处于调试、临时、发布或调试模式:

    转到您的构建设置并添加其他标志,如上图。

    接下来你可以在你的项目中使用它(在你的情况下):

    #ifdef __RELEASE__
    // Do what you want
    #endif
    

    你可以使用 __DISTRIBUTION__ __RELEASE__ __DEBUG__ __AD_HOC__ 取决于您的方案设置

    【讨论】:

    • 我在这些设置中只有 Release 和 Debug(没有 AdHoc),为什么?
    【解决方案3】:

    老问题,但我找到了另一种方法。将此对添加到Info.plist

    <key>Configuration</key>
    <string>${CONFIGURATION}</string>
    

    现在您可以检查应用是发布还是调试:

    var config = Bundle.main.infoDictionary?["Configuration"]
    

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2023-01-03
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      相关资源
      最近更新 更多