【Swift】iOSアプリのバージョン設定
iOSアプリを作成していて、アプリ内の情報画面にアプリのバージョンを表示しようと思ったので、その調査結果。
まだアプリの申請をしていないので、本当に正しいのかは未検証。
修正:2015.11.12
CFBundleShortVersionStringとCFBundleVersionの意味合いが反対になっていたのを修正。
「アプリケーション配布に関するガイド」を参照。
環境
それぞれの意味
CFBundleShortVersionString
- 版番号
- Xcode - General -> Version
- Xcode - Info -> Bundle versions string, short
- 1.2.3のメジャー.マイナー.メンテナンスの形式
- iTunes Connectに入力する版番号と一致していなければならない
- アプリのバイナリアップデート時に、前回よりも大きくなっていること(※未検証)
- ここには、何回目の申請(バイナリアップデート)かを設定するとよい
CFBundleVersion
- ビルド番号
- Xcode - General -> Build
- Xcode - Info -> Bundle version
- ビルド毎に更新する必要がある
- 何回目のバイナリアップロードかを意味させる
- 前回アップロード時よりも大きくなっていること
- アプリの申請時にiTunesConnectで記入するApp一般情報のバージョン設定と同じであること(※未検証)
- アプリの正式バージョン
- 1.1.1 -> メジャー.マイナー.メンテナンスの形式
使い方
現在リリースされているバージョンを「1.1.0」とする。
バグ修正をしたので、Version(版番号・CFBundleShortVersionString)を「1.1.1」にする。
Build(ビルド番号・CFBundleVersion)を前回(仮に)の「3」から「4」にする。
申請をする。
申請でリジェクトされる。
修正して再申請をする。
その時のVersion(版番号・CFBundleShortVersionString)は「1.1.1」のまま。
Build(ビルド番号・CFBundleVersion)をの「4」から「5」にする。
アプリで表記する場合
なので、アプリの設定等に表記するならば、以下のような形がいいかも。
バージョン(申請回数)
CFBundleShortVersionString (CFBundleVersion)
CFBundleVersion (CFBundleShortVersionString)
取得するためコードは、以下。
let version: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String let build: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String