2

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

我可以使用此代码吗?

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

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

4

3 回答 3

5

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

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

#ifndef DEBUG
// Make sure this is executed in debug
NSLog(@"Send token in production");
#else
// Release code
#endif
于 2013-10-18T14:22:46.613 回答
3

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

在此处输入图像描述

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

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

#ifdef __RELEASE__
// Do what you want
#endif

您可以 __DISTRIBUTION__ __RELEASE__ __DEBUG__ __AD_HOC__ 根据您的方案设置使用

在此处输入图像描述

于 2013-10-18T14:22:33.227 回答
0

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

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

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

var config = Bundle.main.infoDictionary?["Configuration"]
于 2017-05-10T08:12:00.943 回答