アプリのバージョン、ビルドを「設定」の初期値として設定する
「設定」アプリの自分のアプリの項目に、アプリのバージョンやビルドを表示することがあります。
地味にどうやるんだろうと思って調べました。
結論から言うと、Run Scriptを追加するだけで出来ました。plistファイルの読み書きを行うコマンドPlistBuddyを用います。以下、その仕組みと共に説明します。
まず、「設定」アプリの初期値はSettings.BundleのRoot.plistに記載されます。
一方で、アプリケーションのバージョン、ビルドは、プロジェクト設定ファイルに記載されます。
やりたいことは、「アプリケーション名」-Info.plistに記載されているバージョン、ビルドをRoot.plistファイルのバージョンのDefault ValueとビルドのDefault Valueに記載することとなります。
そこで、PlistBuddyコマンドを用いて、以下のようなRun Scriptを追加しました。
#プロジェクト設定ファイルのバージョン番号とビルド番号を #Settings.bundleの設定ファイルのそれぞれの初期値に設定するためのスクリプト versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" 'NSUserDefaults Sample/NSUserDefaults Sample-Info.plist') /usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $versionNumber" 'NSUserDefaults Sample/Settings.bundle/Root.plist' buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" 'NSUserDefaults Sample/NSUserDefaults Sample-Info.plist') /usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $buildNumber" 'NSUserDefaults Sample/Settings.bundle/Root.plist'
プロジェクト名の「NSUserDefaults Sample」は適当に読み替えて下さい。
このRun Scriptを追加することで、ビルドの度にRoot.plistのバージョン、ビルドのDefault Valueに実際のバージョン、ビルドが設定されるので、Root.plistの更新忘れが無くなっていい感じです。