Swift

Guideline 2.4.1でリジェクトされた時の対処方法(iPad非対応)

こんにちは!KON(@pippi_kon)です。

先日、私が作成したiPhoneアプリがAppStore審査でリジェクト(Guideline 2.4.1)されてしまいました。

四苦八苦しながらもなんとか原因が特定でき、審査を通過することができました。

そこで今回は、iPhoneアプリの審査が「Guideline 2.4.1 – Performance – Hardware Compatibility」でリジェクトされた時の原因と対処方法についてご紹介します。

この記事をおすすめしたい人
  • Guideline 2.4.1でリジェクトされて対処に困っている方
  • iPhone向けアプリを作成されている方

Guideline 2.4.1の原因

「Guideline 2.4.1 – Performance – Hardware Compatibility」の原因はiPhone向けに作成したアプリが「iPadに対応できていない」ということです。

 

iPhone向け(*1)なのになぜiPadに対応しないといけないの?

*1:XcodeのDeployment InfoのDevicesに「iPhone」を指定

 

と思う方もいらっしゃると思います。(私もそうでした)

そこで、リジェクトされた時のメールをじっくり読んでみると…英語なのでわかりませんでした(汗)

でもご安心を!

日本語版のApp Store審査ガイドラインがちゃんとあります。(さすがApple)

確認するとこんなことが書いてありました。

 ユーザーがアプリケーションを最大限に活用できるよう、iPhone向けのアプリケーションは可能な限りiPadでも実行できるようにしてください。Appleは、ユーザーがすべてのデバイスで使用できるように、ユニバーサルアプリケーションの構築を検討するようおすすめしています。

出典:App Store審査ガイドライン

ふむふむ、なるほど。

iPadにiPhone互換機能があるので、iPadでも実行できるようにする必要があると。

つまり、iPadのiPhone互換機能に対応できてなかったのがリジェクトの原因でした。

今回審査に出したアプリは不具合修正してアップしたのですが、今回の修正とは関係ないところでリジェクトされたんですよね…(初回リリース時にすでにiPhone互換機能に対応できていなかった)

なぜ1回目のリリースは通ったのだろうか。。。

アプリテスト時はiPadのiPhone互換機能でもテストしよう!

 

私のアプリがリジェクトされた直接原因

Xcodeに付随されているシミュレータで片っ端から動作チェックしたところ、以下のハードウェアにて画面が崩れる現象が確認できました。

画面が崩れたハード
  • iPad Pro (9.7-inch)
  • iPad Pro (10.5-inch)
  • iPad (5th generation)
  • iPad Air
  • iPad Air 2

これらのハードウェアで動作させると画面がかなり小さかったんです。

この時の私のアプリには、ボタンやビューなどの画面部品の座標や大きさを直接指定している箇所がありました。

この座標や大きさが画面が小さくなったことで誤作動し、そのせいで画面が崩れていたんだと思います。

なお、iPad Pro (12.9-inch) 系については、iPhone 8と同じ画面比率のようで、表示は崩れていませんでした。

 


私の対処方法

配置する部品の座標や大きさを、ハードウェア毎に処理を切り分けることで対処しました。

具体的には以下の処理切り分け用コードを作成しました。

「UIScreen.main.nativeBounds.height」は画面の縦のサイズを取得できます。

ハードウェアによって縦のサイズは決まっていますので、それぞれのcase文にハードウェア毎の処理を追記することで処理を切り分けることができます。

 

まとめ

いかがだったでしょうか?

今回は、iPhoneアプリの審査が「Guideline 2.4.1 – Performance – Hardware Compatibility」でリジェクトされた時の対処方法についてご紹介しました。

Guideline 2.4.1はiPadのiPhone互換機能に対応できていない旨のリジェクトです。

たとえiPhone向けに出したアプリでも、iPadの互換機能に対応させる必要があります。

アプリをリリースする際は、iPhoneはもちろん、iPadでの動作チェックもするようにしましょう。

あわせて読みたい
【Swift4】初心者におすすめ!質問サイトteratailが便利すぎる件 プログラミング言語「Swift」は、2014年に誕生した比較的新しいプログラミング言語です。 そのため、他のプログラミング...