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

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

我可以使用这段代码吗?

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

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

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

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

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

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

在此处输入图像描述

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

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

 #ifdef __RELEASE__ // Do what you want #endif 

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

在此处输入图像描述

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

 Configuration ${CONFIGURATION} 

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

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