mzgkworks

iOSを中心にプログラミング関係について書く

【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