アプリ起動時にバージョンを表示したい、
サーバーから対応バージョンを取得して起動しているアプリのバージョンと比べたいなど
バージョンを取得したい時があるかと思います。
アプリ内のどこかにプログラムで定義している方もいるかと思いますが、
Xcode(7.2.1使用)のTARGET設定のGeneralに表記されている
Version
Build
に記載してある情報を取得したいと思います。
versionは主にアプリ配信時のバージョンです。申請時はiTunes Connectに登録したバージョンと一致してないといけません。
buildは、アプリのビルドのバージョンで、iTunes Connectにアップしたバージョンと被らなければ大丈夫です。
プロジェクト作成時は値が1になっているかと思います。
連続した数字で大丈夫のようですが、私は配信バージョンの最後にbuild番号を入れてアップしております。
(なぜそうしているかはおまけで説明)
バージョン:Version
NSString *ver = [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"];
ビルドバージョン:Build
NSString *ver_b = [[NSBundle mainBundle] infoDictionary][@"CFBundleVersion"];
このように取得できます。
必要に応じて好きな方を取得して使用してください。
おまけ
versionを取得するのとは別ですがAppleのTestFlight外部配信、
審査が通ればBuildを上げるだけでよほどのことがない限り審査無く外部配信ができるようです。
例えば
TestFlight審査のためにアプリをアップ。Versionは1.0.0 Buildは1.0.0.0
↓
審査が通ってTestFlight外部配信。
↓
問題を修正して再度配信したい。
↓
毎回配信Version上げて審査していられないので、
Build(1.0.0.0 → 1.0.0.1)を変更してアップロードします(以後1.0.0.*(*の数値を上げていく))
よほどの事がない限り即配信が可能かと思います。
buildバージョン設定をversionの値と同じにしてその後ろに設定している理由
TestFlight配信でどれだけ数値が上がるかわからない
バージョンアップを重ねる毎にどんどんbuildの数値が上がっていくのが嫌なのでそうしてます。
また、配信バージョンがかわればbuidのバージョンが被っていないので0から振り直しがでできます。
ログを残したければ、この配信バージョンではbuildはここまで行ったか、、という記録も残せます。
(自動ではないので自分で記録しないといけませんが)