2011-09-16 10 views
0

当社のアプリケーション・デプロイメントの構造は次のようなものです:Macのアプリケーション名

  1. ユーザーには、ユーザーが要求したとき、自己が特定の期間に、タイムスタンプが含まれている、サーバーを構成するアプリケーションをダウンロード
  2. アプリケーション名ことができますそれは、いくつかのより多くの情報のための迅速なユーザーである必要があります。

ユーザーがアプリケーションをダウンロードすると、アプリケーション名にはAPPName_24234442424234が含まれます。

NSString *pAppName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]; 

NULLになっています。その後、私はこれを試してみました:

NSString *pAppName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; 

私はそれはアプリケーションの名前であることを期待していたが、それは、我々は、プロジェクトの作成時に設定される1つを返します。

アプリケーションの「変更された名前」をプログラムで取得する方法はありますか?

答えて

2

あなたのサーバがリクエスタに送信する前にアプリラッパーの名前を変更しているだけの場合、infoDictionaryは変更されません。おそらく

[[NSBundle mainBundle] bundlePath] 

または

[[NSBundle mainBundle] bundleURL] 

を使用して、ラッパーの実際の名前を把握するために、その文字列を解析します。 `infoDictionary`が、具体的バンドルのInfo.plistファイルの内容を返します:@ロハンのソリューションが機能しなかった理由をさらに説明するために、

ジョー

+0

。そのファイル*の内容は 'infoDictionary'です。 Info.plistを変更しないと、 'infoDictionary'は変更されません。バンドルのファイル名だけを変更すると、その場所から情報を取得する必要があります。 –

+2

また、パスまたはURLに 'lastPathComponent'メッセージを送信してファイル名を取得し、その文字列に.app拡張子を取り除く' stringByDeletingPathExtension'メッセージを送信することもできます。パスまたはURLを自分で解析する必要はありません。ココアにあなたのためにそれをさせてください。 –

+0

良い点。私はファイルパスの方法を指摘するとは思わなかった。 – Flyingdiver

関連する問題