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

标签 ios objective-c swift

有没有办法在运行时查明应用程序当前是在测试设备/模拟器上运行还是从真实的应用商店安装中运行?

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

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

如果该应用程序来自真实的应用程序商店安装,可能在某处设置了配置?还是其他方式?

谢谢。

最佳答案

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

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


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

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

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

可以引用这个SO thread了解更多详情。

关于ios - 应用程序是否在测试设备/模拟器/真实应用程序商店安装上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231824/

相关文章:

ios - 为什么 swift parse .getDataInBackgroundWithBlock 被阻止为明文 http 请求?

ios - Xcode 7.1 - 未授权使用此服务错误

ios - 如何将按钮操作作为直接命令执行

ios - 归档时 Swift 嵌入式框架构建失败

ios - 在模拟器中更改 ios 版本后,组件在 ViewController 中的位置错误

ios - 操作无法完成。 ( cocoa 错误 3840。)”(字符 16 周围对象中的键没有值。)

ios - 如何在 iOS 中制作个人热点打开时使用的发光条效果?

ios - 我的解析查询直到应用程序的其余部分完成后才完成,我该如何阻止这种情况发生?

xcode - 如何初始化相互依赖的属性

ios - 向我的 iOS 应用程序添加 Facebook Like 按钮时出现问题