今回初めてiOSアプリを提出するのですが、アプリをリジェクトされたくありません。
Apple Docsから引用しています。
CFBundleVersion (String - iOS, OS X) は、バンドルのイテレーション(リリース済みまたは未リリース)を識別する、バンドルのビルドバージョン番号を指定するものです。ビルドバージョン番号は、ピリオドで区切られた 3 つの負でない整数からなる文字列で、最初の整数が 0 より大きいものである必要があります。文字列には、数字 (0-9) とピリオド (.) のみを含める必要があります。先頭のゼロは各整数から切り捨てられ、無視されます(つまり、1.02.3は1.2.3と同じです)。このキーはローカライズできません。
CFBundleShortVersionString (String - iOS, OS X) は、バンドルのリリースバージョン番号を指定し、アプリのリリースされた反復を識別します。リリースバージョン番号は、ピリオドで区切られた 3 つの整数からなる文字列です。最初の整数は、新機能や大きな変更を実装したリビジョンなど、アプリのメジャーリビジョンを表します。2つ目の整数は、あまり目立たない機能を実装したリビジョンを表します。3番目の整数はメンテナンスリリースを表します。
このキーの値は、アプリのイテレーション(リリース済みまたは未リリース)を識別する "CFBundleVersion "の値とは異なります。このキーは、InfoPlist.stringsファイルに含めることで、ローカライズすることができます。
でも、ちょっと不思議な感じがします。これに対する私の解釈は、両方の値を同じにすること、つまり
CFBundleVersion: 1.0.0
CFBundleShortVersionString: 1.0.0
どなたか、100%そうであることを確認できる方はいらっしゃいますか?
CFBundleShortVersionStringは、アプリのバージョンを提供します。これは通常、アプリをApp Storeに公開するたびにインクリメントされます。これは、アプリケーションのApp Storeページの"Version"セクションに表示されるバージョンです。
CFRBundleVersion は、開発およびテスト、つまり技術的な目的で使用される ビルド番号 を提供します。エンドユーザーがビルド番号に興味を持つことはほとんどありませんが、開発中に各ビルドで何が開発され、何が修正されたかを知る必要がある場合があります。これは通常、内部リリースの各反復で増分されます。また、Jenkinsのような継続的インテグレーションツールを使えば、各ビルドでビルド番号を自動でインクリメントすることができます。
この2つの番号は互いに依存しませんが、混乱を避けるために並列にしておくとよいでしょう。アプリがApp Storeの審査を通過したら、公開するかどうかに関わらず、PhilやlikeTheSkyが述べているようにビルド番号をインクリメントする必要があることを覚えておいてください。
使用例例えば、十分にテストされたビルドがあり、提出する準備ができているとします。バージョン番号は 1.0.0 で、ビルド番号は 1.0.0.32 です。アプリを提出したら、バージョンを 1.0.1 に、ビルド番号を 1.0.1.0 に更新する必要があります。
このように考えてください。ショートバージョン(CFBundleShortVersionString
)は、公開されているバージョン番号です。バージョン番号 (CFBundleVersion
) は、公開されているバージョン番号よりも頻繁に変更される可能性のある内部バージョン番号です。個人的にはどちらも同じものを使っていますが、多くの人はビルドごとに "version" を更新しています。いずれにせよ、Appleにリリースする際には、通常、"short version"を更新します。どの程度の頻度でquot;version"を更新するかは、あなたやあなたのニーズ次第です。
rmaddyさんの回答]1が正しいです。あと2つ、考えを付け加えます。
iTunesConnectのWebサイトでアプリの定義の一部として指定される、3つ目のバージョン番号に注意してください。この番号がXcodeの2つの番号と異なる場合、Appleはあなたに警告を出します。警告はショーストッパーではないので、無視してもかまいません("error"ではありません)。
また、句読点を含む3つの数字を使用する必要はありません。これは、いくつかのアプリケーションでは意味があるかもしれません。従来、最初の数字の変更は、通常は互換性に影響を与える、何らかの劇的な変更を示していました。
その他のアプリでは、ISO 8601 標準書式スタイル(YYYYMMDDHHMM)の日付時間値のみを使用するとよいでしょう。例えば、201606070620
のようにです。年-月-日-時間-分の順に並べると、増え続ける数字が表示され、パディングゼロにより常に同じ長さとなり、アルファベット順に並べた場合は年代順になります。
私は、iOS 7, 8, & 9 で動作する出荷用 iOS アプリで、このスタイルのバージョン番号を使用することに成功しました。
この値の生成は自動化することも可能です。プロジェクトの Target
> Build Phases
> Run Script
パネルにある。
1.シェル」の欄に、/bin/sh
と指定する。
2.以下の5行のスクリプトを貼り付けます。
3.(オプション) Show environment variables in build log
チェックボックスにチェックを入れます。
4.4. Run script only when installing
チェックボックスのチェックをはずす。
ビルドを行うたびに、UTCタイムゾーンの現在の日付時刻が取得されます。スクリプトの -u
フラグは、現在のデフォルトのタイムゾーンではなく、UTCを使用します。一般的に、プログラマやシステム管理者はローカルタイムゾーンではなくUTCを使用して考えることがベストです。
#!/bin/bash
buildNumber=$(date -u "+%Y%m%d%H%M")
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $buildNumber" "$INFOPLIST_FILE" # Version number
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" # Build number
echo "DateTime for app version number: $buildNumber"
または、バージョン番号に従来の 1.2.3
を使用し、ビルド番号に日付時刻を使用したハイブリッドも可能です。ハイブリッドにするには、CFBundleShortVersionString
行の前に #
をつけてコメントアウトするだけです。