2014-12-04 75 views
17

過去,我已經爲通過TestFlight分發的生產版和測試版構建了獨立的構建配置。這使得對beta版本進行修改變得很容易,例如將應用程序的其他設置公開,讓測試人員更徹底地測試內容,並查看有關應用程序狀態的更多技術信息。檢測iOS應用程序是否從Apple的Testflight下載

有沒有辦法檢查應用程序是否通過Apple的TestFlight進行分發,以更改應用程序的運行方式?編譯指示不再有意義,因爲可以將相同的構建版本分發給beta測試人員並提交給商店,但也許有一種方法可以在運行時進行檢查。

+0

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

+0

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

回答

32

這工作:

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

相關問題