检查应用程序是否构建为发布

时间:2013-10-18 14:17:44

标签: ios

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

我可以使用此代码吗?

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

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

3 个答案:

答案 0 :(得分:5)

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

我在我正在处理的应用程序中执行了类似的操作,但使用了DEBUG宏(反转测试)。我还添加了#else以确保它已在调试中登录。

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

答案 1 :(得分:3)

您可以使用以下方法使用您想要的标志来测试您是处于调试,adhoc,发布还是调试模式:

enter image description here

转到“构建设置”并添加其他标记,如上图所示。

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

#ifdef __RELEASE__
// Do what you want
#endif
你可以用 __DISTRIBUTION__ __RELEASE__ __DEBUG__ __AD_HOC__ 取决于您的方案设置

enter image description here

答案 2 :(得分:0)

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

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

现在您可以检查应用是否正在发布或调试:

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