App Store の審査で止まった四つ:iPad のスクショ、ITMS-91064、アカウント削除、投稿の通報
トレカダッシュ 開発の記録 / 2026年10月
iOS アプリ「トレカダッシュ」を App Store の審査に出そうとして、何度か、出す手前で止まりました。Apple 側の自動検査で止まったもの、提出画面で止まったもの、ガイドラインに照らして点検して見つけたもの。コミットに残っている記録から、四つ書きます。
このサイトには、トレカダッシュの作品ページはまだありません。審査の結果は、この記事には書いていません。
1. iPad のスクリーンショットを求められた
App Store Connect で審査に提出しようとすると、「13 インチの iPad ディスプレイのスクリーンショットをアップロードする必要があります」と出て止まりました。プロジェクトの設定が、もともと iPhone と iPad の両方(1,2)になっていたためです。
ところが、iPad を意識して作った形跡はなく、実機の確認も、レイアウトの調整も、すべて iPhone でした。未検証のまま「iPad 対応」として審査に出すのはリスクがあるので、iPhone 専用(1)に変えました。
2. 自動検査で「無効なバイナリ」(ITMS-91064)
ビルド 877 が、Apple 側の自動審査で、「無効なバイナリ」として却下されました。原因は、プライバシーマニフェスト(PrivacyInfo.xcprivacy)の、トラッキングは「する」(NSPrivacyTracking=true) と書いたのに、トラッキング先のドメイン一覧(NSPrivacyTrackingDomains)が空だったことです。Apple の検査は、この組み合わせを矛盾として弾きます。
アプリは、AdMob の広告(バナー、ネイティブ、アプリ起動広告)を、ATT の同意のあとにパーソナライズして出しています。トラッキング自体はしているので、「する」は正しい。直すべきは、空のドメイン一覧のほうでした。ただ、Google は AdMob 向けのドメインの公式な一覧を出していません。そこで、広く使われている広告配信のドメイン(googlesyndication.com、googleadservices.com、doubleclick.net、google.com)を追加しました。Release 構成のビルドが通ることは確認しています。
3. アカウント削除(ガイドライン 5.1.1(v))
アカウントを作れるアプリは、アプリの中からアカウントを削除できなければなりません。削除の処理は、利用者のマップ投稿(目撃情報)と、その付随データ(所有者、申告、通報、お礼)も消すようにしました。Apple でサインインしている人は、アプリ側で Apple に再確認してから、サーバーで削除して、トークンを取り消します。設定画面とプライバシーポリシーの説明も、実際の動きに合わせました。
さらに、アカウントを削除しても、購読は解約されません。これを、設定の説明と削除の確認画面に書き足しました(審査の要件として)。
4. 利用者の投稿(ガイドライン 1.2)
マップ投稿は、利用者が自由に書けます。それまでは、文字数や座標の範囲といった形式のチェックだけで、内容を弾く仕組みがありませんでした。そこで、自由記述の 3 項目(店舗名・商品名・メモ)に、簡易の NG ワード判定を足しました。該当すれば、投稿は作りますが、最初からレビュー待ちの状態にします。
もう一つ。投稿の通報は、開発者が管理画面の URL を自分から思い出して開かない限り、誰にも気づかれない状態でした。毎日の運用連絡に、レビュー待ちの件数を足して、見落としを防ぎました。
分かったこと
審査は、出してから落ちるものではなく、出す手前の点検で半分、見つかる。
- 四つのうち、二つ(iPad、ITMS-91064)は、機械が止めてくれました。残りの二つ(削除、投稿)は、ガイドラインを読んで、自分で点検して見つけたものです。
- 「未検証のものを出さない」ほうが、「全部対応する」よりも、速くて安全でした(iPad の件)。
この記事は、コミット(2026年9月16日〜10月6日)の記録から書きました。
この話に出てくるもの
- TestFlight にビルドが来ない原因を、一度間違えた — 同じアプリの、ビルドの記録
- 「めっちゃクラッシュする」の原因は… — 同じアプリの、実機ログの記録
ほかの記録
- App Store 審査で「Guideline 2.1 Information Needed」が届いた:求められた6つ — 初めての審査で届いたのは、不合格ではなく Guideline 2.1「Information Needed」だった。求められた六つ(実機の画面収録、目的、外部サービスの一覧など)と、前に直したこととのつながり。
- ITMS-91064「無効なバイナリ」:NSPrivacyTracking が true なのに NSPrivacyTrackingDomains が空だった — ビルドが Apple の自動審査で ITMS-91064 により却下された。NSPrivacyTracking が true で、NSPrivacyTrackingDomains が空の配列だったのが原因。ドメインを補った経緯と、確認できていないこと。
- iOS アプリが固まって強制終了される(0x8BADF00D):SwiftUI の計算プロパティが毎回走っていた — 実機のログにあった 0x8BADF00D(watchdog)。951件の記事を、画面を描き直すたびにメインスレッドで数え直していた。原因の特定と、バックグラウンドで計算する形に直した記録。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。