检测iOS应用程序是否从Apple的Testflight下载
过去,我已经为通过TestFlight分发的生产版和测试版构建了独立的构建配置。这使得对beta版本进行修改变得很容易,例如将应用程序的其他设置公开,让测试人员更彻底地测试内容,并查看有关应用程序状态的更多技术信息。检测iOS应用程序是否从Apple的Testflight下载
有没有办法检查应用程序是否通过Apple的TestFlight进行分发,以更改应用程序的运行方式?编译指示不再有意义,因为可以将相同的构建版本分发给beta测试人员并提交给商店,但也许有一种方法可以在运行时进行检查。
这工作:
if ([[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]) {
// TestFlight
} else {
// App Store (and Apple reviewers too)
}
更新
上述方法似乎不工作了,苹果改变他们签署TestFlight构建方式。然而,这确实有效:
BOOL isRunningTestFlightBeta = [[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"];
看起来够合理。我不会马上测试它,你能指出对此的任何证实吗?影响苹果评论者是一个有趣的副作用。 – 2014-12-10 14:21:52
我在多个SO问题中找到了这个答案,并确认TestFlight应用程序确实采用了第一个路径。 HockeyApp在SDK中也使用相同的方法,所以我认为它是安全的。 – 2014-12-10 14:51:37
虽然TestFlight确实采取了第一种方式,但我刚刚确认Apple的审阅者不会。他们采用App Store的路径,这对我来说真的是个坏消息:( – 2014-12-20 11:13:24
您是否找到解决方案?我有完全相同的需求。 – 2014-12-09 17:52:18
@mixedCase尚无解决方案。 – 2014-12-09 19:29:58