255

iPhoneアプリを書いています。公開済みですが、バージョン番号を表示する機能を追加したいです。

リリースする各バージョンでこれを手動で行う必要はありません...

Objective-C でアプリのバージョンを確認する方法はありますか?

4

16 に答える 16

224

ここで説明するように、スクリプトを使用してヘッダー ファイルを現在の Subversion リビジョン番号で書き換えます。そのリビジョン番号は kRevisionNumber 定数に格納されます。次に、次のようなものを使用してバージョンとリビジョン番号にアクセスできます。

[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]

これにより、「バージョン 1.0 (51)」という形式の文字列が作成されます。

于 2009-01-19T19:00:33.997 に答える
149

Brad Larsonの回答に基づいて、情報plistにメジャーバージョンとマイナーバージョンの情報が保存されている場合(特定のプロジェクトで行ったように)、これはうまくいきました:

- (NSString *)appNameAndVersionNumberDisplayString {
    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString *appDisplayName = [infoDictionary objectForKey:@"CFBundleDisplayName"];
    NSString *majorVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
    NSString *minorVersion = [infoDictionary objectForKey:@"CFBundleVersion"];

    return [NSString stringWithFormat:@"%@, Version %@ (%@)", 
                appDisplayName, majorVersion, minorVersion];
}

現在、マイナー バージョンを手動で更新するのは面倒な場合があるため、ソース リポジトリのリビジョン番号のトリックを使用するのが理想的です。あなたがそれを結び付けていない場合 (私が結びつけていなかったように)、上記のスニペットは役に立ちます。また、アプリの表示名も引き出します。

于 2012-08-15T04:13:36.880 に答える
42

これは私がアプリケーションで行ったことです

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

うまくいけば、この簡単な答えが誰かを助けるでしょう...

于 2013-11-02T20:01:42.223 に答える
31

CFBundleShortVersionStringplist.info で文字列を指定し、提供された APIを使用してプログラムで読み取ることができます。

于 2009-01-19T18:46:55.727 に答える
30

ビルド バージョンとアプリ バージョンの 2 つがあります。

  1. アプリのバージョンを取得するには:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. ビルド バージョンを取得するには:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    
于 2015-01-23T09:01:46.660 に答える
17
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
于 2014-07-23T18:15:02.673 に答える
16

XYZ形式のバージョン文字列を取得する簡単な方法は次のとおりです。

[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]

または、XY のみの場合:

[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]

これらのスニペットはどちらも、ラベル オブジェクトの text プロパティに割り当てる文字列を返します。

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
于 2013-09-07T02:58:06.490 に答える
4

アプリの info.plist ファイルを読み取り、キー CFBundleShortVersionString の値を取得します。info.plist を読むと NSDictionary オブジェクトが得られます

于 2009-01-22T05:05:34.463 に答える
0

これは、リビジョン管理システムで処理するのに適しています。そうすれば、ユーザーからバグ レポートを受け取ったときに、そのコードのリビジョンをチェックアウトし、(できれば) ユーザーとまったく同じコードを実行してバグを再現できます。

ビルドを行うたびに、コードの現在のリビジョン番号を取得し、プロジェクト内のファイルを更新するスクリプトを実行します (通常は、何らかの形のトークン置換を使用します)。次に、エラー出力にリビジョン番号を常に含めるエラー処理ルーチンを作成するか、「バージョン情報」ページに表示することができます。

于 2009-01-19T18:46:09.940 に答える