おつかれさまです。エンジニアの藤澤です。
ご存知の通り、iOS の App Store でアプリを公開するためには Apple による審査が必要です。
クラッシュフィーバーもリリースから 1 年以上経ち、何度もアップデートを繰り返してきましたが、その間、審査のリジェクトも何度か経験してきました。数えてみたら これまで 28 回のアップデートを行ない、8 回もリジェクトされてました。
今回はその中の一部の事例と、どのように対応したかを書いてみたいと思います。
スクリーンショットの過度な装飾
iTunes Connect 上でアプリの紹介用にスクリーンショットを 5 枚まで登録できますが、目を引くように派手な装飾や煽り文句を載せることも多いかと思います。クラッシュフィーバーでもデザイナさんがあれこれ苦労してかっこいいスクリーンショットを作ってくれていたんですが、これが "3.3 – Apps with names, descriptions, screenshots, or previews not relevant to the content and functionality of the App will be rejected” に引っかかってリジェクトされてしまいました。
正直どこまでが OK でどこからが NG なのかよく分からないのですが、実際のゲーム画面が極力隠れないようにスクリーンショットを作り直してもらったところ、審査を通過することができました。
なお、こういったメタデータでのリジェクトの場合、審査に出し直す(iTunes Connect 上で審査提出ボタンを押す)しなくても、問題解決センターで直接返信するだけで再度審査してもらえます。むしろ、そのほうが再度審査に出すよりも早く見てもらえます。
メンテ中で審査できない
サービスの運営上メンテナンスは避けて通れませんが、運悪く審査のタイミングがメンテナンスにぶつかってしまうと、「ゲームが始められない」と言われてリジェクトされてしまうことになります。特定のバージョンのみアクセスを許可し、それ以下のバージョンはアクセスを弾くような仕組みは用意しておきましょう。
また、忘れてしまいがちなのが、ベータテスト実施後、そのバージョンをそのまま審査に出す場合です。この場合、ユーザさんの手元にあるバージョンと審査用のバージョンが同じになってしまうため、上記のような仕組みが使えませんので注意が必要です。この場合、バージョンを上げて審査に出し直すことになるかと思います。
課金アイテムをどこから購入するか分からない (1)
課金アイテムを新規に登録する場合、その課金アイテムに対して審査が入ることになりますが、それがゲーム内のどこから購入できるか分からないということでリジェクトされてしまったことがありました。このときは簡単な画面遷移図を作って送付したところ、「親切な説明ありがとう!」というメッセージとともに審査を通してもらえました(笑)
ちなみに、こういった不安がある場合、あらかじめ「App Review に関する情報」のメモ欄に説明を書いておくとよいようです。もしくは課金アイテムを登録するページの「審査メモ」欄。
課金アイテムをどこから購入するか分からない (2)
上記に関連して、期間限定のセール商品を登録する場合、一般ユーザさんには見せるわけにはいかないが、審査用には表示する必要が出てきます。これについても、メンテナンスの件と同様、特定のバージョンのみ購入できるような仕組みを用意しておきましょう。
再現性の低い不具合
「最初のダウンロードが途中で止まって先に進まない」と言われてリジェクトされたことがありました。しかし社内では再現できず、何度かやりとりしたものの進展ありませんでした。仕方ないので「こちらではちゃんと動いているんですが……」ということで動画を撮って送付したところ審査を通してもらうことができました。同じような不具合が起きている方がいましたらすみません……
番外編
ところで、iOS の審査でのリジェクトは有名な話(?)ですが、android でも一度リジェクトされたことがありました。正確にはリジェクトとは違いますが。
Google Play Developer Console 上にセキュリティアラートがつくことがありますが、ここで警告されている対応期限までに問題を解決しないと、それ以降のアップデートがブロックされてしまいます。一見ふだん通りアップデートできたように見えますが、数時間後にアップデートがブロックされた旨の警告が表示されるので注意が必要です。また、一度アップデートがブロックされてしまうと、修正版をアップロードした後も数時間待たないと警告が消えません。内心あせりますが、落ち着いて待ちましょう。
クラッシュフィーバーの場合は OpenSSL の脆弱性について警告を受けたのですが、Cocos2d-x 自体と、それとは別のライブラリ内で OpenSSL が使用されており、一方を対応して安心していたところ、もう一方が引っかかってしまいました……。
$ unzip -p YourApp.apk | strings | grep “OpenSSL"
のコマンドで確認できますので、しっかり確認しておきましょう……。
ちなみに、Cocos2d-x の場合は external/curl ディレクトリの libcurl で OpenSSL が使われておりますので、以下から最新版を取ってくるなどして対応するとよいかと思います。