我必须确保该应用程序不会发送推送通知的设备令牌,如果它是在调试中构建的,则在发布时发送。
我可以使用此代码吗?
#if RELEASE
[SendTokenRequest sendDeviceToken:deviceToken withCompletion:nil];
#endif
显然很难测试,编译而不是在调试中执行,只是不确定它是否会在生产中执行......
答案 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,发布还是调试模式:
转到“构建设置”并添加其他标记,如上图所示。
接下来,您可以在项目中使用它(在您的情况下):
#ifdef __RELEASE__
// Do what you want
#endif
你可以用
__DISTRIBUTION__
__RELEASE__
__DEBUG__
__AD_HOC__
取决于您的方案设置
答案 2 :(得分:0)
老问题,但我找到了另一种方法。将此对添加到Info.plist
<key>Configuration</key>
<string>${CONFIGURATION}</string>
现在您可以检查应用是否正在发布或调试:
var config = Bundle.main.infoDictionary?["Configuration"]