web-dev-qa-db-ja.com

iOSアプリでターゲットのバージョン/ビルド番号をプログラムで表示する方法は?

下の画像のように、target versionの値をプログラムで取得するにはどうすればよいですか?

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

129
slim

2数字があります!

マーケティングリリース番号は、顧客向けで、バージョン番号と呼ばれます。 1.0で始まり、 2.0 3.0 へのメジャーアップデートのために上がります。 1.11.2への更新、および1.0.1へのバグ修正用、1.0.2。この番号は、リリースと新機能に関するものです。 9で停止する必要はありません。 1.11.23 は妥当なバージョン番号です。

ビルド番号は、それまでに作成された内部ビルドの数です。ただし、リポジトリのブランチ番号やコミット番号など、他の番号を使用するものもあります。この番号は unique である必要があります。これは、わずかなインクリメンタルな変更のみがあるさまざまなビルドを区別するためです。


バージョン番号を取得するには:

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

build番号を取得するには:

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   

bothが必要な場合:

最初に上記の行を使用し、次に次の行を使用します。

Objective-C:

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

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

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

ノート:

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

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

buildandversion


Xcodeでは、プロジェクト設定のRun scriptビルドフェーズに以下を配置することでビルド番号10進数として自動インクリメントできます

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

hexadecimalビルド番号には、このスクリプトを使用します

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

step1

ステップ2

step2

ステップ3

step3

374
Binarian

プロジェクトやXcodeを変更する必要はありません。ここに両方の​​Swiftバージョンが個別にあります:

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

このレポジトリに含まれています。チェックしてください:

https://github.com/goktugyil/EZSwiftExtensions

11
Esqarrouth

ここでSwiftの同じコード:

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

プログラムでバージョンとビルド番号を表示-Swift 4.

let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0"

let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0"            

let versionAndBuildNumber = "Ver #\(versionNumber) ( Build #\(buildNumber) )"
4