16

我更愿意为 TestFlight 与 App Store 使用相同的构建配置。有没有办法在运行时检测应用程序是通过 TestFlight 还是 App Store 安装的?takeOff(我的想法是,如果它没有通过 App Store 安装,我只会打电话。)

我想避免在 App Store 构建中使用 TestFlight 以保护我的用户的隐私,并避免此处讨论的潜在网络脱轨。

4

3 回答 3

9

要确定 Swift 中的 Debug、TestFlight 或 AppStore 部署:

  private static let isTestFlight = NSBundle.mainBundle().appStoreReceiptURL?.lastPathComponent == "sandboxReceipt"

  // This can be used to add debug statements.
  static var isDebug: Bool {
    #if DEBUG
      return true
    #else
      return false
    #endif
  }

完整的源代码和示例:https ://stackoverflow.com/a/33830605/639227

于 2015-11-20T22:41:10.897 回答
7

我相信这与Check if iOS app is live in app store的副本足够接近,可以将其关闭。

您可以通过检查是否缺少embedded.mobileprovision来确定您的应用程序是否通过应用商店分发。此文件仅包含在临时构建中。因此,如果您仅通过 TestFlight 或 HockeyApp 分发构建并且它不是商店构建,则它必须是 TestFlight 或 HockeyApp 构建。

像这样:

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

该技术来自HockeyApp SDK

于 2012-12-21T18:34:21.393 回答
-1

是一篇博文,向您展示了如何添加除 Debug 和 Release(例如 Beta)之外的其他配置。

添加 Beta 配置后,您将创建另一个项目方案。然后编辑这个新方案。在存档部分下,请选择使用 Beta 配置。然后,您使用此方案为 Testflight 存档,并使用以前的方案为应用商店存档。

于 2017-02-16T02:35:33.267 回答