今回作ったiPhoneアプリ「Vanitas -草原の冒険者たち-」のApple審査をした状況があまりにも酷かったので、ここに記録を残しておく。

Apple審査で落ちまくっている人の参考になれば幸いだ。

 

 

状況はこんな感じ。

こんなパターンが延々と続く。

 

ちなみに、僕はApple審査を7年くらい経験している。

審査の回数としては10〜20件程度なので、多くはないけれど経験不足というほどでもない。

今までの経験上、今回の審査も1〜2回注意される程度かと思って挑んだ。

 

■ 3月20日

初回の申請を出した。

この申請はお試しで、落ちても良いからどんな感じか知っておこうと思って審査へ。

 

■ 3月21日

審査は1日で終わり。スピード感も申し分ない。

今回のApple審査もいつものように楽勝だと感じた。

なお、この時にリジェクトされた理由は以下だ。

差出人: Apple

  • 2. 1 Performance: App Completeness
  • 2. 4 Performance: Hardware Compatibility

Guideline 2.1 - Performance - App Completeness



We discovered one or more bugs in your app when reviewed on iPad & iPhone running iOS 11.2.6 on Wi-Fi connected to an IPv6 network.

Specifically, the OK button on the character creation page is not responsive.

Please see attached screenshots for details.

Next Steps

To resolve this issue, please run your app on a device to identify any issues, then revise and resubmit your app for review.

If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.

For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.

Resources

For information about testing your app and preparing it for review, please see Technical Note TN2431: App Testing Guide

For a networking overview, please review About Networking. For a more specific overview of App Review’s IPv6 requirements, please review the IPv6 and App Review discussion on the Apple Developer Forum.
 

Guideline 2.4.1 - Performance - Hardware Compatibility



We noticed that your app did not display as expected when viewed on iPad running iOS 11.2.6. Please see attached screenshots for details. 

Next Steps

To resolve this issue, please revise your app to ensure it runs as expected and displays properly at iPhone resolution on iPad. Even if your app was developed specifically for iPhone, users should still be able to use your app on iPad. 

Resources

For information on iOS device screen sizes and resolutions, please review the iOS Human Interface Guidelines as well as Points versus Pixels in the View Programming Guide for iOS

You may also want to view Size Classes and Core Components for more information about designing apps for multiple screen sizes.

ご丁寧にスクリーンショットまで頂きました。

 

リジェクトの理由は

「OKボタンが押せない」のと「iPadでデザインが崩れている」とのこと。

 

OKボタンが押せないのは、ポイントの振り分けをしていないから押せないのだが・・・

まぁ、わかりにくかったのだろう。

 

iPadの対応についてはこの画面だけ、面倒で最後にやろうと思って忘れていたので仕方がないリジェクトだった。

早速対応して同日にApple審査へ提出した。

 

これでApple審査はおしまい。楽勝だなと思っていた。

この時は・・・

 

■ 3月21日

驚くことに、対応後数時間後にレビューが行われた。

しかし、回答は驚くものだった。

 

差出人: Apple

  • 2. 1 Performance: App Completeness

Guideline 2.1 - Performance - App Completeness

We discovered one or more bugs in your app when reviewed on iPad running iOS 11.2.6 on Wi-Fi connected to an IPv6 network.

Specifically, your app was unresponsive upon launch. 

Please see attached screenshots for details.

Next Steps

To resolve this issue, please run your app on a device to identify any issues, then revise and resubmit your app for review.

If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.

For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.

Resources

For information about testing your app and preparing it for review, please see Technical Note TN2431: App Testing Guide

For a networking overview, please review About Networking. For a more specific overview of App Review’s IPv6 requirements, please review the IPv6 and App Review discussion on the Apple Developer Forum.

 

「起動時にアプリが応答しない」からリジェクトらしいが・・・

え?どこでクラッシュしたの?もう少し詳細を教えて欲しい。

とコメントを書いても、先ほどのようにすぐに回答が来ることはなかった。

 

TestFlightを使って同じバイナリをiPadにインストールしてもタイトルで落ちることはなかった。

え?え?え?

 

TestFlightを使って実機で確認しても落ちません。どうすればいいですか?

とコメントに追記してみたが、返答が来ない。

 

■ 3月23日

この時にVanitasは次のバージョンができていたので、このコメントの回答を待つのをやめて次のバージョンで再申請を出すことにした。

僕はこの辺で少し違和感を感じていた。違和感の内容は以下だ。

 

今までのApple審査は午前2〜11時の間に行われることが多かった。

特に多いパターンは2〜4時の間に「in Review」にステータスが代わり、7〜10時頃にレビューが行われる。

すなわちその日にレビューするアプリをその日の初めに決めて、あらかじめ「in Review」ステータスにしてから逐次レビューをしていく方針だと思っていた。

なので「in Review」になってもすぐにレビューが行われないことが多かった。

 

しかし、今回のレビューは違った。

感覚的には9〜14時の間に行われている感じだった。

アメリカの時間帯を考えると日本時間の14時は向こうでは22時だ。

14時に回答が来るのは今までにはない。

なんだか、言いようの無い違和感に包まれながらApple審査は進んでいった。

 

■ 3月25日

相変わらずレビューに入るのは早い。

そしてリジェクトも早い。

今回はメタリジェクト

 

差出人: Apple

Guideline 2.1 - Information Needed



We have started the review of your app, but we are not able to continue because we cannot locate the Ad remove in-app purchases within your app.

Next Steps

To help us proceed with the review of your app, please reply to this message providing the steps for locating the Ad remove in-app purchases in your app.

え?

課金メニューがわからないだって・・・?

審査にだす課金アイテムに表示の仕方と、表示した後の画像をつけているじゃん・・・。

 

メタデータは見てないの?

それとも、嫌がらせ?

タイトルでクラッシュする件は解決ですか?何も手を入れていないのに・・・

僕の中でどんどん嫌な予感がして来た。

 

僕はこの質問に対する回答を5分後に送った。

 

 

これを見ろ!と。

 

審査を早く進めて欲しいから即座(5分後)に送ったのだが、ここから回答はなかった。

僕のアプリはリリースされるのだろうか。

 

■ 3月26日

回答なし。

 

この時にも一つ疑問が生まれた。

3月25日。今まで書いていなかったから違和感が無いかもしれないが、実は3月25日は日曜日なのだ。

時差の関係でアメリカ(多分カルフォルニア)は土曜日。

今までの経験上土日に回答が来るケースはとても珍しい。

 

なので、日本時間の土曜日の午前中が終わったら次は火曜日の午前2時くらいまではレビューが進まないのが僕の知っている普通である。

しかし、このレビューは違った。日曜日にもレビューが進むのだ。

 

9〜14時くらいに進むレビュー。

土日でも関係なく進むレビュー。

 

僕は得体の知れない恐怖感を感じ始めていた。

なんなんだ。このレビューは・・・

 

■ 3月27日

回答なし。

レビューは早いのに、なぜだ。コメントに関する回答はまるで来ない。

 

「Contacts Us」から「App Review Status」について問い合わせて見た。

 

■ 3月28日

回答なし。

「App Review Status」からは待ってろという返事。

いや、待てない。

 

特急レビューに申し込む。

レビューは1日で終わるんだけれど、コメントに関しては3日以上も待たされている・・・と。

 

すると28日が終わる頃に回答が来た。

 

■ 3月29日

返答は驚愕のものだった。

 

差出人: Apple

  • 2. 1 Performance: App Completeness

Hi,

Thank you for your response. We were able to find the In-App Purchase in the app. Upon using the purchase feature we found the app is not in compliance with Guideline 2.1.0.


Guideline 2.1 - Performance - App Completeness



We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 11.2.6 on Wi-Fi connected to an IPv6 network.

When we tapped “To Purchase” for the “Advertisement removal pack" we got an error message. Please see attached screenshot.

Next Steps

When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code “Sandbox receipt used in production,” you should validate against the test environment instead.

Resources

You can learn more about how to test in-app purchase products in your development sandbox environment in iTunes Connect Developer Help.

For more information on receipt validation, please see What url should I use to verify my receipt? in the In-App Purchase FAQ.

Learn how to generate a receipt validation code in iTunes Connect Developer Help.


Best Regards,

App Store Review

 

「サーバーで領収書の検証をするなら、気をつけて実装してね」的な事を書かれている。

 

が、しかしVanitasは端末内部で完結する。

もう少し言うならば、課金のコードは今まで作って来たどのゲームでもリジェクトに引っかかったことがない。

それくらいシンプルなものだった。

ある程度はセキュリティに気を使っているが、基本的にはAppleの提唱する通りに実装している。

 

この時に「3月21日」に言われた「タイトルでクラッシュする」と言うメッセージが脳裏に宿った。

あの時にコメントを書いても返答はなかった。しかも、処理を入れずにバイナリを入れ替えたらレビューに通った。

今回もコメントを書いたが、前回のように3日も待たされるわけにはいかない。バイナリを入れ替えればうまくいくかも知れない・・・

 

そう思い夜中2時に新しいバイナリを送る事を決意。

眠い...

 

■ 3月30日

レビューはやはり早い。

30日の早朝、バイナリを送ってから約28時間後にレビューが完了してました。

 

バイナリ入れ替え作戦だが、これは当たりだった。

ようやくリリースされた・・・

お疲れ様です。

 

 

Vanitas -草原の冒険者たち-

 

今回Apple審査を通ったアプリはこちらです。

良かったら遊んでみてください。

 

■ まとめ

上記の対応についていくつか書いていないことがあるので、まとめとして書いておく。

Apple審査には当たりとハズレがある。

今回の件は大きく外れたと初めのうちに思ったので、実はある作戦を実行していた。

 

1. 対応策を「App Review に関する情報」に記載する。

リジェクト理由が納得いかない事が多かったので、対応知る人はバカだと思って丁重に対応することにした。

なので、リジェクトされるたびに「App Review に関する情報」へ対応を書き足していった。

 

今回でいうと最終的には以下のようになった。

 

・iPad(実機)の動作確認も済んでおります。
・課金メニューの表示方法はApp 内課金のに画像をつけてます。
・課金のサンドボックステストも済んでおります。
(App 内課金にサンドボックステストのキャプチャーをつけてます。)
・本ゲームはクライアントゲームなので、課金処理でサーバーを使っていません。
レビュー、よろしくお願いいたします。

· We have also checked the operation of the iPad (actual machine).
· As for the method of displaying the charge menu, we attach images to "adventurers_in_grassland.jp.townsoft.price 1" in in-app billing.
· We have also completed the billing sandbox test.
(I've attached sandbox test capture to "adventurers_in_grassland.jp.townsoft.ad_remove" in the in-app bill.)
·As this game is a client game, I do not use the server for billing processing.
Review, thank you.

 

これらの項目はリジェクトのたびに増やしていき、最終的に上記のようになった。

コメント見て推測したのが「今回のApple審査の人は自分が指摘した内容を覆さない」ということだ。

 

下手にコメントで「そちらの確認間違いでは無いですか?」などというような対応はしてはいけないと感じた。

なので、再レビューをして「App Review に関する情報」に対応を書くようにした。

 

 

2. 対応はしない

明らかにおかしな指摘でリジェクトされる場合は、その部分のプログラムを変えるともっと最悪なケースになると思った。

なので「App Review に関する情報」に対応したと書きつつプログラムコードは一切変えなかった。

 

レビューをする人は多くのアプリをみて流れ作業のように確認しているのでは無いかと思っている。

その時に確認ミスをしても、端末の調子(多分シミュレーターでテストをしている)が悪くてもリジェクトされる。

それを前提に考えると、明らかに再現しない指摘は修正する必要はない。

再コンパイルしてBuild Versionを上げれば大抵は大丈夫。

 

3. 課金画像張り替え

経験上、課金画像に関しては以下のような画像の方が良いようだ。

 

 

画像の導線も重要だが、この画像は課金のサンドバックテストが成功していることを示しているので相手もテストを深掘りすることはなさそうだ。

なお、この文言を出すためにはTestFlightやAdHocなどでバイナリの用意をする必要がある。

 

 

なので、結論的としては「初めの1回目にiPadのデザイン崩れ対応」以外に関しては再コンパイルをしてバイナリを提出しつづけただけだった。

皆さんのリジェクト対策の役に立てれば幸いです。

 

ということで、約一週間の死闘に幕を下ろした。。。