下の画像のように、target version
の値をプログラムで取得するにはどうすればよいですか?
Xcodeプロジェクトのターゲットの[プロパティ]ウィンドウに表示されます。これをアプリのスプラッシュ画面に表示して、人々が現在使用しているバージョンを知りたいですか?
2数字があります!
マーケティングリリース番号は、顧客向けで、バージョン番号と呼ばれます。 1.0で始まり、 2.0 、 3.0 へのメジャーアップデートのために上がります。 1.1、1.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
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
最初に上記の行を使用し、次に次の行を使用します。
Objective-C:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
Swift(5.0までテスト済み):
let versionAndBuildNumber: String = "\(versionNumber) (\(buildNumber))"
メインバンドルの値は常に存在するわけではありません。たとえば、コマンドラインアプリケーションではCFBundleShortVersionString
やCFBundleVersion
がないため、メソッドはnil
を返し、クラッシュしますコード内で誤ったダウンキャストを行うためです。ただし、通常のCocoa iOSおよびMacアプリでは、これらの値は定義されており、削除されません。
これは、 Xcodeバージョン7.3(7D175)でテストされています。多くの場合、ビルド番号は括弧/中括弧で書かれています。ビルド番号は16進数または10進数です。
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
の場合、以下を実行します。
プロジェクトやXcodeを変更する必要はありません。ここに両方のSwiftバージョンが個別にあります:
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
このレポジトリに含まれています。チェックしてください:
ここでSwiftの同じコード:
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
プログラムでバージョンとビルド番号を表示-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) )"