我更愿意为 TestFlight 与 App Store 使用相同的构建配置。有没有办法在运行时检测应用程序是通过 TestFlight 还是 App Store 安装的?takeOff
(我的想法是,如果它没有通过 App Store 安装,我只会打电话。)
我想避免在 App Store 构建中使用 TestFlight 以保护我的用户的隐私,并避免此处讨论的潜在网络脱轨。
我更愿意为 TestFlight 与 App Store 使用相同的构建配置。有没有办法在运行时检测应用程序是通过 TestFlight 还是 App Store 安装的?takeOff
(我的想法是,如果它没有通过 App Store 安装,我只会打电话。)
我想避免在 App Store 构建中使用 TestFlight 以保护我的用户的隐私,并避免此处讨论的潜在网络脱轨。
要确定 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
}
我相信这与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。
这是一篇博文,向您展示了如何添加除 Debug 和 Release(例如 Beta)之外的其他配置。
添加 Beta 配置后,您将创建另一个项目方案。然后编辑这个新方案。在存档部分下,请选择使用 Beta 配置。然后,您使用此方案为 Testflight 存档,并使用以前的方案为应用商店存档。