【发布时间】:2013-10-18 14:17:43
【问题描述】:
我必须确保应用程序不会发送设备令牌以进行推送通知,如果它是在调试中构建的,并且在发布时发送。
我可以使用此代码吗?
#if RELEASE
[SendTokenRequest sendDeviceToken:deviceToken withCompletion:nil];
#endif
显然它很难测试,它编译而不是在调试中执行,只是想确保它会在生产中执行......
【问题讨论】:
标签: ios
我必须确保应用程序不会发送设备令牌以进行推送通知,如果它是在调试中构建的,并且在发布时发送。
我可以使用此代码吗?
#if RELEASE
[SendTokenRequest sendDeviceToken:deviceToken withCompletion:nil];
#endif
显然它很难测试,它编译而不是在调试中执行,只是想确保它会在生产中执行......
【问题讨论】:
标签: ios
是的,它应该适用于您的生产案例,假设 RELEASE 是仅在发布构建步骤中创建的预处理器指令。
我在我工作的应用程序中做了类似的事情,但使用了 DEBUG 宏代替(反转你的测试)。我还添加了#else 以确保它已登录调试。
#ifndef DEBUG
// Make sure this is executed in debug
NSLog(@"Send token in production");
#else
// Release code
#endif
【讨论】:
您可以使用您想要的标志,使用以下方法来测试您是否处于调试、临时、发布或调试模式:
转到您的构建设置并添加其他标志,如上图。
接下来你可以在你的项目中使用它(在你的情况下):
#ifdef __RELEASE__
// Do what you want
#endif
你可以使用
__DISTRIBUTION__
__RELEASE__
__DEBUG__
__AD_HOC__
取决于您的方案设置
【讨论】:
老问题,但我找到了另一种方法。将此对添加到Info.plist
<key>Configuration</key>
<string>${CONFIGURATION}</string>
现在您可以检查应用是发布还是调试:
var config = Bundle.main.infoDictionary?["Configuration"]
【讨论】: