1. ホーム
  2. iphone

[解決済み] iOSアプリでターゲットのバージョン/ビルド番号をプログラム的に表示するには?

2022-05-13 19:22:04

質問

の値をプログラムで取得するにはどうしたらよいでしょうか? target version の値をプログラムで取得するにはどうしたらよいでしょうか?

私のXcodeプロジェクトのターゲットのプロパティウィンドウに見られるように。私は、人々が現在使用しているバージョンを知るために、私のアプリのスプラッシュ画面にこれを表示したいですか?

どのように解決するのですか?

あるのは 2 数です!

マーケティング・リリース・ナンバーは、顧客向けの バージョン番号 . これは 1.0 で始まり、メジャーアップデートの場合は 2.0 , 3.0 へのマイナーアップデートのため 1.1 , 1.2 へのバグフィックスのため、および 1.0.1 , 1.0.2 . この数字は、リリースと新機能を指向しています。9 で止める必要はありません。 1.11.23 が妥当なバージョン番号です。

ビルド番号 は、ほとんどが ビルドの内部番号 の内部的な数です。しかし、中にはリポジトリのブランチ番号やコミット番号のような他の番号を使うものもあります。この番号は ユニーク であるべきで、わずかな増分変更しかない異なるビルドを区別することができます。


を取得するために バージョン 番号を取得します。

Objective-Cです。

NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

Swift < 3.0です。

let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String

Swift 3.0+ (5.0でテスト)。

let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String

を取得するために ビルド の番号を取得します。

Objective-Cです。

NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

Swift < 3.0です。

let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String

Swift 3.0+ (5.0までテスト済み)。

let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String   

もし、あなたが を1つにしてください。

まず上の行を使い、次に次の行を使います。

Objective-Cを使用します。

NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];

Swift (5.0までテスト済み)。

let versionAndBuildNumber: String = "\(appVersionString) (\(buildNumber))"

注意事項

メインバンドル内の値は常に存在するわけではありません。例えば、コマンドラインアプリケーションでは CFBundleShortVersionString または CFBundleVersion を返すので、メソッドは nil を返すことになり、コード内で不正なダウンキャストを行うため、クラッシュします。 しかし、通常の Cocoa iOS および Mac アプリでは、これらの値は定義されており、削除されることはありません。

これは Xcode バージョン 7.3 (7D175) でテストされました。 . ビルド番号は、多くの場合、括弧/中括弧で記述されます。ビルド番号は、16進数または10進数で表記されます。


Xcode を自動インクリメントすることができます。 ビルド番号 として 10進数 にすることで Run script ビルドフェーズに以下を記述します。

#!/bin/bash    
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

について 16進数 ビルド番号はこのスクリプトを使用します。

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber)) 
buildNumber=$(($buildNumber + 1)) 
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"


のために Xcode は以下のようにします。

ステップ1

ステップ2

ステップ3