检测iOS应用程序是否从Apple的Testflight下载

问题描述:

过去,我已经为通过TestFlight分发的生产版和测试版构建了独立的构建配置。这使得对beta版本进行修改变得很容易,例如将应用程序的其他设置公开,让测试人员更彻底地测试内容,并查看有关应用程序状态的更多技术信息。检测iOS应用程序是否从Apple的Testflight下载

有没有办法检查应用程序是否通过Apple的TestFlight进行分发,以更改应用程序的运行方式?编译指示不再有意义,因为可以将相同的构建版本分发给beta测试人员并提交给商店,但也许有一种方法可以在运行时进行检查。

+0

您是否找到解决方案?我有完全相同的需求。 – 2014-12-09 17:52:18

+0

@mixedCase尚无解决方案。 – 2014-12-09 19:29:58

这工作:

if ([[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]) { 
    // TestFlight 
} else { 
    // App Store (and Apple reviewers too) 
} 

更新

上述方法似乎不工作了,苹果改变他们签署TestFlight构建方式。然而,这确实有效:

BOOL isRunningTestFlightBeta = [[[[NSBundle mainBundle] appStoreReceiptURL] lastPathComponent] isEqualToString:@"sandboxReceipt"]; 
+0

看起来够合理。我不会马上测试它,你能指出对此的任何证实吗?影响苹果评论者是一个有趣的副作用。 – 2014-12-10 14:21:52

+0

我在多个SO问题中找到了这个答案,并确认TestFlight应用程序确实采用了第一个路径。 HockeyApp在SDK中也使用相同的方法,所以我认为它是安全的。 – 2014-12-10 14:51:37

+3

虽然TestFlight确实采取了第一种方式,但我刚刚确认Apple的审阅者不会。他们采用App Store的路径,这对我来说真的是个坏消息:( – 2014-12-20 11:13:24