2013-04-18 16 views
5

私のアプリにカスタムロギングを実装する必要があります。iOSアプリのAppStoreインストールを検出する

これを行うには、アプリケーションの現在のバージョンがアプリケーションストアからインストールされているか、xcodeから実行されているか、TestFlightバージョンであるかどうかを検出する必要があります。

インストールソースによってアプリには何か違いがありますか?

私は開発環境で何か違うことを望んでいません。

答えて

11

あなたは、アプリケーションバンドルからembedded.mobileprovisionファイルを読み込むことにより、そこに道の一部を取得することができます:

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

それが存在しない場合は、アプリストアのビルドです。

それが存在しない場合、あなたはあなたのデバッグおよびアドホックプロビジョニングプロファイルの間にいくつかの違いを把握し、あなたがしている構築するかを決定するために、そのために調べる必要があります。

Xcodeは自動的に使用してアプリケーションを設定しているのでリリースで設定されていないDebugコンフィグレーションの "DEBUG"フラグ(AdHocビルドでデフォルトで使用されています)を使用すると、App Storeビルドでのロギングを無効にし、DEBUGマクロフラグ。

+1

これはすばらしく見えますが、アプリをリリースする前にテストする方法が見つかると思いますか?たとえば、リリース時に動作するように、_Release Scheme_でビルドして実行します。 – bago

+0

コンパイル、リリースまたはアドホックのすべてのアプリケーションには、常にembedded.mobileprovisionが含まれます。このファイルがないのはApp Storeの最終ビルドだけです。あなたは、あなたのデバイスからApp Storeアプリケーションをダウンロードし、アプリケーションバンドルを調べることで、それが存在しないことを確認することができます...私はこのテクニックを思い付いていないことに注意してください、HockeyAppはこれを見つけるためのフルクレジットを取得します私はそれについて学んだ)。 –

+0

Nice tip :) +1 Tks – TonyMkenu

0

マクロを定義するビルド構成を使用して、testflight用に構築したことを伝えることができます。

例えば、我々はマクロUSE_TESTFLIGHTをデバッグを設定してビルドしている、と私たちのコードで私たちが行います

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

あなたはその設定アプリを配布/コンパイルしているかに応じて、異なるマクロを新しいビルドコンフィグを作成することができますifdefを使用してそれらに基づいて異なるタスクを実行することができます。

+0

これは動作しますが、異なるビルド構成は「私は開発環境で異なるものを持っていたくありません」という要件を満たしていません。 –

+0

合意。この提案は、いくつかの開発ニーズにとって有益であるが、質問されたように質問に答えない。 –

関連する問題