言いたいことはタイトルが全てなのですが、実に半年近くもハマってしまったのでメモを残します。
内部データをplist形式で保持しているiPhone/iPad向けのアプリを作っており、(とりあえず)完成したと考えたためApp Storeに提出したのですが、”Specifically, your app only displayed a blank screen upon launch.”という内容とともに却下されました。しかし、この事象は自分のシミュレータや複数の実機のデバッグでは再現せず、難儀した…というより対応方法がわからなかったわけです。
そして、今日ふとプロジェクトのファイル構成を見ていたところ、plistファイルが「Preview Content」フォルダに入っているということに気づき、外に出したら(おそらく)解決しました。(いつ、そこに配置したのかはよくわかりません。最初から?)
おそらく解決、と書いたのは、まだApp Storeのreviewには通っていないからです。ではどうやって推測したかというと、macOS上でArchiveされていた当該アプリのパッケージの中身を覗きました。具体的には、「plistファイルをPreview Contentフォルダから出す前」のArchiveされたビルドには必要なplistファイルが含まれず、「出した後」のビルドには含まれていることを確認しました。
Appleのドキュメントにも記載があるようなのですが、探し当てられていません。
後付けですが、Testing a release buildを参照してArchiveされたビルドを実機に入れたら再現しました…。トホホ。
教訓(当たり前ですが…):
(1) シミュレータ・Xcodeからデバッグ中の実機・Release Buildを入れた実機は違う
(2) 再現しないときはRelease Buildを実機に入れてみる
(3) (内蔵データであってもエラー処理してユーザに表示するようにすべきか?)