iOSアプリを5回リジェクトされた話

botman_blue iOS

Xcode-12.3 Swift-5.3 iOS-14

はじめに

最近 iOS アプリをリリースしたのですが5回のリジェクトをくらってしまいました。。。せっかくなのでリリースまでの道のりを記載したいと思います。

リリースの動機

今まで業務でも個人開発でも広告を表示するアプリを作ったことがなかったのであれどうやって実装するんだろう?と思って AdMob を実装した iOS アプリをリリースしてみることにしました。最近 Multipeer Connectivity について調べていたので Multipeer Connectivity を使ったアプリをリリースすることにしました。

リリースしたアプリ

リリースしたアプリはこちら。

‎P2Pじゃんけん
‎適度な距離を保ってともだちとじゃんけんができるアプリ! Wi-FiとBluetoothを利用して近くにいるともだちと1対1でじゃんけんができます。 遊び方 1. ともだちを連れてくる 2. 検索を押してともだちを探す 3. 検索結果を選択して接続する 4. 指定の枠にじゃんけんの手をドロップしてあそぶ

Wi-Fi を使って1対1でじゃんけんができるアプリです!(ただそれだけ)
これを使えばソーシャルディスタンスを保ってじゃんけんができる!(どれくらい離れても大丈夫なんだろ??)

iOS 12 以降の iPhone, iPad 対応で一応英語表示もできます。

ソースも公開してます -> GitHub

リジェクト内容

本題のリジェクトについてです。

1回目

1回目のリジェクト内容はこちらの2つ(提出からリジェクトまでは5時間くらい)

  • Guideline 1.1 - Safety - Objectionable Content
  • Guideline 2.1 - Performance - App Completeness

Guideline 1.1 の方はアプリ名が「ソーシャルディスタンスじゃんけん」にしてたのが問題みたいです。エンタメやゲームアプリでコロナに関することは扱ってはいけないというのにひっかかるらしいです(ソーシャルディスタンスはいけると思った。。。)。

Guideline 2.1 の方は iOS14.4 で試すと端末同士が接続できなかったよとのことでした。調べてみると iOS 14 から Multipeer Connectivity を利用するには Info.plist にパーミッションとサービスの追記が必要なようでした。

ちゃんと公式ドキュメントにも書いてます。。。
Discovering Peers with MultipeerConnectivity

To use the local network on iOS and iPadOS 14, your app requires the NSBonjourServices key present in its Info.plist. The value of the key adheres to the following convention, including .tcp and .udp extensions.

In addition, the system prompts users to grant the app explicit permission to use the local network. To control the messaging of this prompt, your app can include the NSLocalNetworkUsageDescription key.

これは完全にテスト不足でした。。。iOS12, 13 は実機でテストしましたが iOS14 はシミュレータでしかみてませんでした(シミュレータだとつながる)。

修正内容

指摘内容2点に関して下記のような修正をおこないました。

  • Guideline 1.1 - Safety - Objectionable Content
    アプリ名とストアのアプリ情報の修正
  • Guideline 2.1 - Performance - App Completeness
    Info.plist に必要な情報を追加

2回目

2回目のリジェクト内容はこちら(提出からリジェクトまでは2時間くらい)

  • Guideline 1.1 - Safety - Objectionable Content

ん??1回目と同じやつ!と思って調べるとストアのアプリ情報の英語表記に「Social distance」というワードが残ってました。。。(うっかり)

修正内容

下記のような修正をおこないました。

  • Guideline 1.1 - Safety - Objectionable Content
    ストアのアプリ情報の修正(cmd + F で何回かチェック!)

3回目

3回目のリジェクト内容はこちら(提出からリジェクトまでは20時間くらい)

  • Guideline 2.1 - Performance - App Completeness

iOS 14.4 の端末で検索後、接続しようとすると「接続中」->「辞退」になって接続できないよとのこと。

修正内容

とりあえず調査!動作確認した端末が iOS14.1 だったので 14.4 にアップデートして確認してみました。が、再インストールを何度か繰り返してみても再現できず!
手元の端末では再現しないと思い TestFlight で知り合いにも確認してもらいましたが再現せず!

接続要求に対しては下記のように許可しかしていなかったのでわからない。。。

送られてきたスクショを見ると2つの端末に接続しようとしていたのでこれかな?と思いとりあえず下記のように接続端末の台数を1台に制限してみました。

4回目

4回目のリジェクト内容はこちら(提出からリジェクトまでは14時間くらい)

  • Guideline 2.1 - Performance - App Completeness

iOS 14.4 の端末でやっぱり接続できないよ?とのこと。

修正内容

う~~~んわからない。。。とりあえずひたすら検索画面開いて閉じて開いて閉じてして何度か接続確認していると検索画面にアドバタイズを停止しているはずの端末がずっと表示されることがありました。これか!と思い調査してみるもわからず。。。

検索リストに表示されている端末の電源を切っても表示されたままになり、当然その端末に接続しようとすると失敗します(とりあえず「接続中」->「辞退」という状態は再現できた)。

原因はわからないですが毎回 PeerID を生成してるのが悪いんじゃないか?と思い初回だけ生成するようにして UserDefaultsPeerID を保存することにしました。あとサービス名も変更してみました。

5回目

5回目のリジェクト内容はこちら(提出からリジェクトまでは土日挟んだので3日後くらい)

  • Guideline 2.1 - Performance - App Completeness

検索画面で検索中のまま端末が表示されないよ?とのこと。あれ!?悪化してる!

修正内容

よくわからないけどレビュアーさん変わったのかな?と思い問題解決センターで「このアプリを使うには2台の端末が必要です」と返信してみました。

5時間後くらいに「やっぱり接続できないよ?もうアプリを操作してるデモ動画ちょうだい」という返信が来ました。

下記のようにアプリ情報にデモ動画のリンク載せてねってきたのでどっかに動画アップしてリンクを載せないといけないのかと思い Youtube に限定公開してリンクを載せました(あとから聞いたのですが「App Review に関する情報」の下の方に「添付ファイル」という項目があるのでそこに動画ファイルをアップするだけでよかったみたいです。。。)。

Provide the demo video link and any necessary access details in the Notes section.

「App Review に関する情報」に動画のリンクを載せて「保存」を押して(「審査へ提出」は押さない)問題解決センターで「動画載せたよ!もう1回レビューお願いします。」と返信しました。

10時間後くらいに返信が来て審査が再開されました。その後10分ほどで無事リリースされました!!!

まとめ

思ったよりも審査のレスポンスが早くて驚きました。

今回は 4.2 Minimum Functionality ではなかったのですぐ修正できるかな?と思いましたがわりと苦戦しました。

1回目のリジェクトはもうちょっとちゃんとテストすれば防げたと思うのでそこは反省です。テストするときは最新 OS の実機で確認しましょう!

おわりに

AdMob を試してみたいと思って軽い気持ちでリリースしてみましたが思った以上に時間がかかってしまいました。リリースアプリを確認してみましたが広告の表示はできてませんでした。笑
審査中なのかな?ちょっとよくわかってません。

今回の経験で次からはもっと早くリリースできるはず!(これくらいのアプリなら2日くらいでリリースできるようになりたい)

とりあえず次から英語で返信するときは「Best regard,」でしめようと思いました。

コメント

タイトルとURLをコピーしました