海外向けローカイズを行い、InMobiも組み込んだ更新アプリを Appleに申請した。

前回審査に通過してるから、当然今回も何の問題も無いだろうと思っていたのだが…

Appleから「REJECT」通知が…

申請した翌日 Appleにてアプリの審査が開始され… その後突然「REJECT」通知が来た。

えぇ〜? InMobi組み込みでなんかやらかしたかぁ〜!

なんて思いながら iTunesの「REJECT」原因を見てみると…

なんと、iPhoneでは問題無いけど iPadで画面が崩れてる!との事。

私は、その時ハッと気が付いてしまった。

iPadは 1:3比の画面で、iPhone4と同じなのだ。

今までは iPhone4も対応してたので問題なかったのだが、今回から iPhone4を開発から外した事により 1:3比の 320×480サイズの画面に対応出来ていなかったのだ。

Apple発表の「今後は iPhone4をサポートから外す」という事で、今まで面倒な対応をしていた 1:3比画面への調整作業をしなくて楽になった!と喜んだのも束の間、実は iPadが 1:3比なので、結局やはり 1:3比率対応は行わねばならないと言う事なのでした。

と言う事は初回リリースバージョンはこの問題を内包したまま審査を通過してしまって、現在リリース中と言う事に。

iPadユーザー様、本当にゴメンなさい、直ぐに修正しますっ!

全 iPhone、iPad画面分解能対応の問題

私は今まで、320×480と 320×568の 2種類の画面サイズ iPhoneしか意識してなかったので、この際だから現在発売されている全 iPhoneと iPadのあらゆる画面サイズについて如何に対応すべきか少し研究してみた。

私の理想はまず 320×568サイズでゲーム画面を構成し、それをベースに 320×480サイズへの調整を行うものとする。

それを基本に後はハードウェア側で勝手に拡大表示して貰いたい、と思っている。

あらゆる画面サイズ個別に対応していたら、作業がとてつもなく大変になるからだ。

[UIScreen mainScreen].bounds.size.height

まず、私が今まで画面サイズをシステムから取得する方法は上記の命令を使っていて、それが 480と等しければ 320×480サイズの画面で、それ以外なら 320×568サイズの画面であると認識していた。

しかしあらゆる端末に対して実際にはどの様な値を返すのか?常日頃疑問に思っていたので、この際全端末のシュミレータを使って取得値を調べて見た。

結果はこれだっ!

iPhone5 320,568
iPhone6 320,568
iPhone6 Plus 320,568
iPhone6s 320,568
iPhone6s Plus 320,568
iPhone7 320,568
iPhone7 Plus 320,568
iPhone SE 320,568

iPad Retina 320,480
iPad Air 320,480
iPad Air2 320,480
iPad Pro(9.7) 320,480
iPad Pro(12.9) 320,568

はぁ?

結局、[UIScreen mainScreen].bounds.size.height が返す値は… 480と 568の 2値しか無い。

2値しか無いと言う事は私にとって素晴らしい事なんだけど、そんなはずは無く、本来ならあらゆる端末の個別サイズを返すはずだ。

おかしいっ? シュミレータだから間違った答えを返すのか?

な〜んて、少し考え込んでしまったが、しかし、原因は直ぐに理解出来た。

原因は「スプラッシュ画面」だ。

私は 320×480と 320×568の 2種類サイズのスプラッシュ画面を用意しているのだが、その事によりシステムは例えどの様なサイズの端末であれこのスプラッシュ画面が気持ち良く治るサイズを返してくれるのだ。

そしてシステムがいい具合に拡大して私のアプリを端末に表示してくれるのだ。

なんという素晴らしい事か。

つまり私は 320×480と 320×568の 2種類の画面サイズを意識したゲームを作るだけで、今後どの様な画面サイズの iPhoneや iPadが発売されようが、自動的にサイズを適合してくれると言う事なのだ。

まとめ

なるほど〜、今回は少し時間を掛けて調べたが、これで納得出来た。

と言う事で今まで通り 320×480サイズへの画面調整を行なって再度 Appleに申請し、翌日無事に審査通過しました!

次は、Androidに InMobiを組み込む時に発生した大問題についてです。

それでは、また〜♡