是应用程序在测试设备/模拟器/真实应用商店安装上运行

时间:2015-10-20 08:37:12

标签: ios objective-c swift

如果应用程序当前正在测试设备/模拟器或真实的应用程序商店安装中运行,有没有办法在运行时找到它?

我需要在应用程序中实施广告跟踪,在测试/调试期间,我不想发送跟踪数据,因为这会更改统计信息。

但我不想仅仅区分DEBUG / RELEASE构建,因为RELEASE构建是例如在分析期间也使用。

如果应用程序来自真正的应用程序商店安装,可能会在某处设置配置?或者其他任何方式?

感谢。

3 个答案:

答案 0 :(得分:4)

您可以在UIDevice上添加以下类别,以检查它是否在设备或模拟器上运行。

- (BOOL)isSimulator {
#if TARGET_IPHONE_SIMULATOR
    return true;
#else
    return false;
#endif  
}


+ (BOOL)isSimulator {
    return [[self currentDevice] isSimulator];
}

编辑:我刚刚探索并发现有一种方法可以知道应用程序实例是否来自app store。这是:

if ([[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]) {
  // not from app store
} else {
  // from app store
}

您可以参考此SO thread了解详情。

答案 1 :(得分:2)

如果您为调试,分发和应用商店版本(理想情况下应该)创建单独的配置,则可以添加用户定义的设置'每个配置具有不同的值。 这可以通过info.plist文件导出代码作为bundle属性公开,您可以编写代码来以不同的方式处理每个配置。

Refer this answer通过屏幕截图更详细地了解这一点。

答案 2 :(得分:0)

我提出了以下解决方案:

https://data.seattle.gov/resource/pu5n-trf4.json?
$where=within_polygon(incident_location, 
'MULTIPOLYGON(((-122.345239999941 47.7339842230969,-122.344670705637 47.7051200031236, -122.35540073991 47.7051536806063,-122.355548433321 47.7340195160745, -122.345239999941 47.7339842230969)))')

这涵盖除了直接(通过USB)上传到设备的RELEASE Build之外的所有内容。我仍然无法找到解决方案来检查这一点(除了lukya的手动解决方案)。