2013-04-18 148 views
5

我需要在我的應用程序中實現自定義日誌記錄。檢測AppStore安裝iOS應用程序

爲此,我需要檢測應用程序的當前版本是否已從應用商店安裝,或者正在從xcode運行還是TestFlight版本。

根據安裝源,應用中有不同的東西嗎?

我不想在開發環境中有不同的東西。

回答

11

您可以通過有從應用程序包的embedded.mobileprovision文件讀取獲得一部分的方式:

NSString *provisionPath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]; 

如果不存在,你是在應用商店中構建。

如果它存在,你需要弄清楚你的調試和臨時調配譜之間存在一些差異,並尋找到確定建立你英寸

因爲XCode的自動建立與應用調試配置中的「DEBUG」標誌,在Release中沒有設置(默認用於AdHoc構建),最好禁用應用商店構建中的日誌記錄,並根據DEBUG宏標誌確定日誌級別。

+1

這看起來不錯,你認爲我可以找到一種方法來測試它,然後我釋放應用程序?例如使用_Release Scheme_構建和運行,以確保它在發佈時可用。 – bago

+0

所有您編譯,發佈或特設的應用程序將始終包含embedded.mobileprovision。這只是最後一個缺少這個文件的App Store版本。您可以通過從您的設備下載任何應用商店應用程序,並探索應用程序包來驗證它不存在。請注意,我沒有提出這種技術,HockeyApp得到充分的信任,因爲找到了這個(或至少這是我從中瞭解到)。 –

+0

不錯的提示:) +1 Tks – TonyMkenu

0

您可以使用構建配置來定義一個宏,讓您知道您已經爲testflight構建過。

例如,我們有調試版本設置的一個宏USE_TESTFLIGHT,並在我們的代碼,我們做到:

#ifdef USE_TESTFLIGHT 
//do something test-flight specific 
[TestFlight takeOff:kTestFlightAppToken]; 
#endif 

您可以創建取決於你如何在編譯設置不同的宏新建CONFIGS /分發應用程序,並使用ifdef來執行基於這些任務的不同任務。

+0

雖然有效,但不同的構建配置不符合「我不想在開發環境中有不同的東西」。 –

+0

同意。這個建議雖然對某些發展需求有用,但並不能回答問題。 –

相關問題