2013年10月22日火曜日

iOS7対応: install iconが消えない



Enterprise InHouse Distributionで、iOS6では問題なくインストールが完了するが、iOS7ではインストールアイコンが残ったままになるという現象が発生しました。

私の場合はアプリのBundle Identifierと、インストールサイトにあるplistのそれとが一致していなかったのが原因でした。

Ad Hocのインストールで同様の問題が発生するという書き込みが結構あります。
同じ原因の場合もありましたが、他にprovisioning, certificateを作り直して解決した場合も報告されています。これも、なんらかの不整合が解消したためでしょう。

iOS6ではインストールが完了するため、かえって基本的な設定ミスを見逃していることがありそうです。

参考:
http://forums.macrumors.com/showthread.php?t=1626848
https://devforums.apple.com/message/904282#904282

2013年10月5日土曜日

Build番号の自動インクリメント



Build番号の自動インクリメントを仕掛けました。

このページに画面キャプチャー付きで手順が載っており、そのとおりに行えば設定できます。


・ProjectのBuild PhaseにRun Sricptを追加する。
・Run Sricptは末尾に追加され、ビルドの最後で実行される。(ドラッグで順序を変更可能)
・Run Scriptニシェルスクリプトを登録する。

Xcode5ではBuild Phase追加はメニューから行います。

"How to auto-increment Bundle Version in Xcode 4?"ではスクリプトファイルを保存し、それを実行するため、プロジェクトを他の環境でビルドする場合は各々の環境にスクリプトファイルを保存する必要があります。それが面倒な場合はRun Scriptに直接スクリプトを書くこともできます。


buildPlist=${INFOPLIST_FILE}
newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe 's/(\d+\.\d+\.)(\d+)/$1.($2+1)/eg'`

この場合はVersion、Build ともに数字3つのをピリオドで区切ったものとなります。
例:Version=1.1.0 、Build=1.1.123

Versionを 1.1.0 、Buildを 1.1.0.123 のように設定する場合はPerlの正規表現を次のように変更します。("\d+\."を追加)
's/(\d+\.\d+\.\d+\.)(\d+)/$1.($2+1)/eg'

TARGETS/Generalの設定は次のようになります。

プログラム中で値を取得する例
(リリース時はVersion、デバッグ時はBuild):
#ifdef DEBUG
    NSString *buildNumber = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
#else
    NSString *buildNumber = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
#endif