【Monaca】 「iPad対応」リジェクトの回避方法【iOSアプリ】

この記事は最終更新から2年以上が経過しています。情報が古くなっている可能性があります。

先日の記事でも触れましたが、初めてiOSアプリ審査でリジェクト(却下)されてしまいました。
修正方法がわからずかなり手こずってしまったので、自己流の対応方法をまとめます。

その時のメールがこちら。

2. 4 Performance: Hardware Compatibility
Guideline 2.4.1 – Performance – Hardware Compatibility

We noticed that your app did not run or display as expected when viewed on iPad running iOS 11.2.5. Please see attached screenshots for details.
(省略)

ざっくり見たところ

Apple: 君のアプリはiPadに対応してないよ!スクショ貼ったから確認して!詳しくはこのガイドラインのここを見てね!

とのこと。まぁiPad対応してないしね!と思いましたが、その先のメッセージを読むと、どうやらiPhone専用アプリでもiPad対応しないといけないようです。
MonacaプレビューでiPad表示を確認するとがっつり崩れていたので、iPadでも問題なく表示されるよう修正して再申請。

Apple: 君のアプリはiPadに対応してないよ!具体的にはボタンがフッター広告で隠れてて次の画面に進まないよ!スクショ貼ったから(以下略)

(=゚ω゚=;) ?
ご丁寧に具体的な修正箇所を教えていただきました。たしかに添付のスクショは崩れていましたが、MonacaプレビューのiPad表示はもちろん問題ないのでどういう環境での表示なのかわからず。
ひとまず確実に審査を通すため、UAを切り分けiPadのみフッター広告非表示にしてみて再申請。

Apple: 君のアプリはiPadに対応してないよ!詳しくはこのガイドラインのここを見てね!

ついに具体的な指摘がなくなりました。
同じ箇所が治って来ないってことですね。すみません。。

これ以上審査チームに無駄な手間をかけないため、遅ればせながら今回のリジェクト理由についてしっかり確認しました。

リジェクトの原因はiPhone互換モードでの表示崩れ

ひとまずガイドラインの確認と記事探し。

まとめると、

  • iPadにはiPhone専用アプリをiPhoneの画面解像度(320×480または640×960)で動作させる機能(=iPhone互換モード)がある
  • そのためiPhone専用アプリでもiPadでの表示審査が行われる
  • iPhone互換モードは、iOSシミュレータのiPadで確認することができる

ちなみに、iPhone専用アプリとユニバーサルアプリ(マルチデバイス対応)のiPadでの見え方の違いについては、こちらの記事の比較画像がとてもわかりやすかったです。
[iOS] iPad対応は最初から考慮していた方がメリットがある

MonacaでのiPhone専用アプリ、ユニバーサルアプリの違いは、恐らくアプリ設定の「iPhone、iPod touch」のみにチェックしているか、iPadを含めてチェックしているかの違いかと思います。
ユニバーサルアプリであれば、iPhone互換モードではなく通常通り表示されるのでプレビューのiPad表示を確認すれば問題ないと思います。(未検証)

とういうことで、審査チームから送られてきたキャプチャが再現できなかったのは、iPhone互換モードでの表示だったためですね。
ひとまず問題を把握できました。

iPhone互換モードの確認方法

そうするとiPhone互換モードでの表示を確認しつつ崩れを修正したいところです。
持っている方は実機でMonacaデバッガー等を使えば確認できるかと思いますが、私はiPadの実機を持っていません。

実機以外だとXcodeのiOSシミュレータから確認することができるようですが、調べる限り、MonacaでビルドしたものをiOSシミュレータで確認することはできないようです。

ipaファイルは実機でしか動作させることができません。

なぜなら、iOSシミュレータは実機のARM系CPUをエミュレーション
してアプリを実行しているのではなく、Macのx86系CPUの機械語コードで
コンパイルされたものを実行するようになっているためです。
このため、ipaファイルをiOSシミュレータで実行することは絶対にできません。
(xcodeでデバッグ中に機械語コードを表示させれば、実機で動作
させている場合とシミュレータで動作させている場合で全然違うことが
わかります。)

他にも手当たり次第試しましたがうまくいかず。
以下試したことメモ

  • iTunesConnectからXcodeにアプリデータを落としてくる→×
  • monacaビルド設定をXcodeに移行してシミュレータ使えないか→×
  • ipaファイルからappファイルへ変換できないか→×
  • appファイル(ならiOSシミュレータで起動可能)をどこからか落とせないか→×

ここまで来てよくよく考えて見ると、iPhone4と5の画面解像度(320×480、320×568)で動作できればいい訳なので、chromeデベロッパーツールのシミュレータを使うことにしました。
以下力技です。

monacaのプレビューは現在iPhone8以降しか選択できないので、ひとまずiPhone8に設定。
それからchromeのデベロッパーツールを起動し、シミュレータモードにします。そうすると、広告の表示も確認できるようになります。

Elementsを見ると#PreviewFrameのスタイルがwidth:375px、height:667pxになっているので、それぞれ320px、480pxに変更。(iPhone5解像度であれば320px、568px)

こうするとおおよそiPhone4の解像度で見た状態に近くなります。
実際に送られて来たキャプチャとほぼ同じレイアウトが再現でき、フッター広告のせいでボタンがクリックできない状態も確認できました。

この画面を確認しながら修正して再申請。
びくびくしつつ待っていましたが、無事通過・リリースされましたヽ(*´∀`)ノ

まとめ

今回の経験に基づく方法のため確実に審査が通るとは言えませんが、同じように困ってる方の参考になれば幸いです。
以上monacaでのipad対応リジェクトの回避方法でした。