アプリケーション提出時の心得

iTunes Connectにアプリケーションを提出した後に、そのアプリが実際には動かないことに気がついた。

この場合バイナリだけをこっそり置き換えるなんてことは出来なくて、一旦提出したバイナリをリジェクト(破棄)して、状態をアップロード待ち状態にした後に再度提出することになる。 当然それまでのレビュー待ちの状態はリセットされる。例えるならスーパーのレジの最後尾に並び直すようなものであり、レビュー待ちが更に長引くことになる。

直接の原因はローカライズに使用しているLocalizable.stringが見つからなかったことだが、そんな単純なことに気がつかなかったのは、提出前のアプリケーションを真っ新な状態でインストールせず、今までテストしたアプリケーションを更新して最終確認を行ったからだ。
iOSアプリケーションを開発したことがある方であれば、真っ新な状態(アンインストールされた状態)でアプリケーションをインストールするのと、既に動いているアプリケーションを上書きする事の意味が違うことは理解できるだろう。

既にインストールされているアプリケーションを上書きする場合、バンドルに含まれる画像、ローカライズ用のファイルなど本来新規インストール時には無いはずのデータがデバイス側には既に存在している場合があり、最終的にアーカイブしたバイナリのバンドルに足りないファイルがあった場合でも問題が表出しない場合がある。また、.plistの特定の項目を新たに追加した場合などは初回のインストールでは項目がセットされていないことを前提にプログラミングする必要があるが、同様に既に項目の追加された.plistがあると問題に気がつくのが遅れる場合がある。

教訓

アプリケーションを提出する前には(できれば検証用端末をリセットして)新規でインストールして、全ての機能をテストすること。