【发布时间】:2013-04-19 01:07:44
【问题描述】:
我需要在我的应用中实现自定义日志记录。
为此,我需要检测当前版本的应用程序是否已从应用商店安装,或者正在从 xcode 运行,或者是 TestFlight 版本。
根据安装源的不同,应用中有什么不同吗?
我不想在开发环境中有一些不同的东西。
【问题讨论】:
标签: iphone ios objective-c app-store detection
我需要在我的应用中实现自定义日志记录。
为此,我需要检测当前版本的应用程序是否已从应用商店安装,或者正在从 xcode 运行,或者是 TestFlight 版本。
根据安装源的不同,应用中有什么不同吗?
我不想在开发环境中有一些不同的东西。
【问题讨论】:
标签: iphone ios objective-c app-store detection
您可以通过从应用程序包中读取 Embedded.mobileprovision 文件来获得其中的一部分:
NSString *provisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"];
如果不存在,则说明您在应用商店构建中。
如果确实存在,您需要找出调试配置文件和临时配置文件之间的一些差异,并查找这些差异以确定您所在的版本。
因为 XCode 会自动在调试配置中使用“DEBUG”标志设置应用程序,而在 Release 中未设置(默认情况下用于 AdHoc 构建),您最好在应用商店构建中禁用日志记录并根据 DEBUG 宏标志确定日志记录的级别。
【讨论】:
您可以使用定义宏的构建配置来让您知道您已为 testflight 构建。
例如,我们在调试版本中设置了一个宏 USE_TESTFLIGHT,在我们的代码中我们这样做:
#ifdef USE_TESTFLIGHT
//do something test-flight specific
[TestFlight takeOff:kTestFlightAppToken];
#endif
您可以创建新的构建配置,根据您编译/分发应用程序的方式设置不同的宏,并使用 ifdef 基于这些配置执行不同的任务。
【讨论】: