Kuboyage

・ 個人開発 / iOSアプリ開発

App Store審査は何時間?13回の実測とリジェクト3回の理由

App Store審査は何時間?13回の実測とリジェクト3回の理由

この記事について 📖

対象読者: これからiOSアプリを審査に出す個人開発者、審査待ちで何日かかるか見積もりたい人

この記事で扱うこと: App Store審査にかかった時間の実測値(13回分)と、リジェクトされた3回の理由と直し方。TestFlightで試せるようになるまでの時間も扱います

はじめに 👋

こんにちは!H×Hのセンリツ大好きエンジニアです!✌️

「審査に出したけれど、いつ終わるのか分からない」。リリース日を決めたいときに一番困るのがここです。Appleは平均値を公表していますが、自分のアプリが何時間で返ってくるかは出してみるまで分かりません。

そこで、この半年に個人開発の3アプリで出した審査を、提出時刻と結果メールの受信時刻から数えました。対象は3つです。タスク管理のTODOうさぎと筋トレ記録のLifture。そしてペットの記録アプリPetdear。

※この記事はAIと2人3脚で執筆されています

この記事はおよそ5,500字なので、11 分で読めます!

目次 📚

  1. 結論:通過した10回の中央値は約15時間
  2. 13回分の実測データ
  3. リジェクトされた3回の理由と直し方
  4. TestFlightで試せるまでの時間
  5. 審査待ちを短くするために確かめること
  6. まとめ

結論:通過した10回の中央値は約15時間 ⏱️

「アップデートの審査は、たいてい翌日の朝までに返ってきます。」

13回のうち、一度で通過したのは10回でした。提出から「Review of your submission is complete」のメールが届くまでの時間は次のとおりです。

指標値
通過した回数10回
中央値約15.4時間
最短5.5時間
最長78.5時間
24時間以内に終わった回数10回中7回

AppleはApp Reviewのページ(Apple Developer)で「平均して提出の90%は24時間以内に審査される」と書いています。手元の結果は10回中7回が24時間以内で、公式の数字より少し遅めでした。

ただし、これは「一度で通った回」だけの話です。リジェクトされた3回は、結果が出るまでに35時間から8日かかっています。リリースの予定に効くのは中央値よりも、リジェクトされたときの長さです。

13回分の実測データ 📊

「提出時刻はApp Store Connect APIの記録、結果時刻はAppleからのメールの受信時刻です。」

時刻は日本時間です。所要時間は、審査待ちの列に並んでいた時間も含みます。

提出アプリ結果所要時間
2/8 11:42TODOうさぎ通過16.4時間
2/15 22:37TODOうさぎ通過5.5時間
2/28 15:58Lifture通過78.5時間
8/5 20:24Petdear(新規)リジェクト193.1時間
8/14 17:08Petdear(新規)通過24.9時間
8/21 22:44Petdearリジェクト106.1時間
8/26 9:34Petdear通過26.7時間
8/28 20:01Petdear通過12.4時間
9/5 9:38Petdearリジェクト35.0時間
9/6 21:41Petdear通過17.2時間
9/10 12:53Petdear通過14.5時間
9/17 16:32Petdear通過12.8時間
9/24 18:58Petdear通過6.8時間

同じ期間に審査へ出したものの、結果メールが届いていない提出がPetdearで3回ありました。途中で取り下げたものなので、この表からは外しています。

表から読めること

一番長かったのは、新規アプリとして最初に出したPetdearの193時間、つまり8日です。しかも結果はリジェクトでした。新規アプリの初回は、アップデートとは別物と考えて日程を組んだほうが安全です。

土曜の夕方に出したLiftureは、結果が火曜の夜でした。週末をまたいだせいかどうかは、この1回だけでは言い切れません。急ぎの提出なら、週末をまたがない曜日を選ぶほうが無難です。

逆に、Petdearのアップデートが続いた9月は6.8〜17.2時間で安定していました。夕方に出すと、翌朝には結果が届いている感覚です。

リジェクトされた3回の理由と直し方 🚫

「3回とも、App Store Connectに申告した内容とアプリの実際の動きが食い違っていました。」

リジェクトのメールには、審査したバージョン・端末・該当するガイドラインが書かれています。3回分を順に見ていきます。

1回目:Guideline 4.8 ログインサービス(新規アプリの初回)

Petdearの最初の提出は、ガイドライン 4.8(Apple Developer)で止まりました。ログインがGoogleなどのサードパーティーだけで、Sign in with Appleが無かったためです。同等の選択肢を用意するよう求められました。

メールには、審査に使われた端末がiPad Air 11-inch (M3)だったことも書かれていました。iPhone向けに作ったアプリでも、iPadで審査されることがあります。

直し方はSign in with Appleを追加することでした。修正版は24.9時間で通過し、これが初回リリースになりました。

2回目:Guideline 5.1.2(i) トラッキングの許可ダイアログが出ない

2回目の指摘は、プライバシーの申告と実際の動きのずれでした。App Store Connectの「Appのプライバシー」では、トラッキングに使うデータ(広告データ、おおよその位置情報、デバイスIDなど)を申告しています。それなのに、審査員はApp Tracking Transparency(ATT)の許可ダイアログを一度も見なかった、という内容です。

実は、ATTのダイアログはこの提出の直前に入れていました。原因は呼び出す順番です。Googleの同意フォーム(UMP)が正常に終わったときだけATTを呼ぶ作りになっていました。そのため次の場合に、iOSへ許可を求めないまま黙って先へ進んでいました。

  • 通信エラーで同意フォームが失敗した
  • 同意の状態が REQUIRED や UNKNOWN のまま
  • 広告SDKが読み込まれていない

審査の端末でどれが起きたのかは分かりません。直したのは、同意フォームの結果にかかわらずATTを必ず呼ぶ形です。手元の実機ではダイアログが出ていたので、自分の環境で出ることは、審査の環境で出ることの証明になりません。 修正版は26.7時間で通過しました。

3回目:自動更新サブスクの利用規約(EULA)リンク

3回目は自動のチェックで止まりました。メールの冒頭に「This is an automated message」とあります。指摘は、自動更新のサブスクリプションを売っているのに、App Storeのページに利用規約(EULA)へのリンクが無いというものでした。該当するのはガイドライン3.1.2(サブスクリプション)です。

Appleの標準EULAを使う場合は、App説明文に標準EULAのリンク(Apple)を入れれば足ります。課金を入れるバージョンでは、説明文も一緒に見直すことをおすすめします。

カスタムEULAを登録していなかったので、Petdearでは説明文に標準EULA・独自の利用規約・プライバシーポリシーの3つのリンクを入れました。直した版は17.2時間で通過しています。

ビルドのアップロードで弾かれたもの

審査とは別に、アップロードの段階で弾かれたこともありました。メールの件名は次の一文です。

Action needed: The uploaded build for Petdear has one or more issues.

本文のエラーは次のとおりでした。

ITMS-90189: Redundant Binary Upload - You've already uploaded a build with build number '28' for version number '1.2.0'.
ITMS-90186: Invalid Pre-Release Train - The train version '1.2.0' is closed for new build submissions
ITMS-90062: This bundle is invalid - The value for key CFBundleShortVersionString [1.2.0] in the Info.plist file must contain a higher version than that of the previously approved version [1.2.0].

1つ目はビルド番号の重複、残りの2つは承認済みのバージョン番号のまま新しいビルドを送ったことが原因です。承認されたら、次はバージョン番号を上げてからビルドします。

TestFlightで試せるまでの時間 🧪

「内部テストなら、アップロードから2〜3分で手元に届きます。」

TestFlightには内部テスターと外部テスターがあります。TestFlightの概要(Apple Developer)によると、審査が要るのは外部テスターに配るときです。グループに最初のビルドを追加したときに審査へ送られ、以降のビルドは完全な審査が要らない場合があります。

内部テストの場合は、Petdearの8ビルドで数えました。App Store Connectのアップロード記録から「is now available to test」メールまでが、1.8〜2.8分です。この数字には、ビルドを作る時間とアップロードにかかる時間は入っていません。

「testflight 審査待ち」で止まって見えるときは、外部テスターのグループにビルドを追加していないか確認してください。自分だけで試すなら、内部テスターとして配れば審査を待たずに済みます。

審査待ちを短くするために確かめること 🛠️

「審査そのものは速められないので、リジェクトされる回数を減らします。」

13回を振り返ると、待ち時間を伸ばしたのはリジェクトでした。この13回から、提出前に確かめたいのは次の4つです。

  • ログイン方法にSign in with Appleがあるか
  • プライバシー申告がアプリの中身と合っているか
  • サブスクがあるなら説明文にEULAのリンクがあるか
  • バージョン番号とビルド番号を上げたか

審査への提出と状態の確認は、App Store Connect APIで自動化しています。提出は reviewSubmissions を作り、項目を入れ、最後に submitted をtrueにする3段階。ビルドから審査に出すまでの流れは、App Storeアプリ公開ガイドで解説しています。

まとめ 🎊

  • アップデートの審査は中央値で約15時間
  • 24時間以内に返ってきたのは10回中7回
  • 新規アプリの初回は8日かかった
  • リジェクトは35時間から8日の遅れになる
  • 内部テストのTestFlight配信は2〜3分

平均だけを見ると「1日あれば通る」と考えがちです。実際に日程を崩したのは、新規アプリの初回と3回のリジェクトでした。リリース日から逆算するなら、新規アプリは1〜2週間、アップデートは2〜3日の余裕を見ておくと安心です。

今回の数字は、ペットの写真と健康の記録を家族で残せるPetdearの開発中に集めたものです。ほかにも個人で作っているアプリをプロダクト一覧に並べているので、よければ覗いてみてください。

参考リンク 🔗

Apple公式

関連記事

ブログの記事一覧へ