ITMS-91064「無効なバイナリ」:NSPrivacyTracking が true なのに NSPrivacyTrackingDomains が空だった
トレカダッシュ 開発の記録 / 2026年10月
iOS アプリ「トレカダッシュ」をアップロードしたところ、Apple 側の自動審査で、ビルド 877 が「無効なバイナリ」として却下されました。エラーコードは ITMS-91064。原因は、プライバシーマニフェスト(PrivacyInfo.xcprivacy)の、二つの項目の組み合わせでした。コミットの記録で、何が起きて、どう直したかを書きます。
このサイトには、トレカダッシュの作品ページがあります(トレカダッシュ)。ここに書くのは、開発の記録です。
起きたこと
ビルド 877 が、Apple の自動審査で、「無効なバイナリ」として却下されました(2026年10月6日)。人が見る審査の前に、機械の検査で弾かれた、ということです。
原因:「トラッキングする」と書いて、ドメインが空だった
プライバシーマニフェストには、次の二つの項目がありました。
| 項目 | 値 |
|---|---|
NSPrivacyTracking(トラッキングをするか) | true |
NSPrivacyTrackingDomains(トラッキングに使うドメイン) | 空の配列 |
Apple の検査は、この組み合わせを、矛盾として弾きます。「トラッキングをする」と宣言しているのに、そのドメインが、一つも書かれていないからです。
では、NSPrivacyTracking のほうを false にすればよいか、というと、そうではありませんでした。このアプリは、AdMob の広告(バナー、ネイティブ、アプリ起動広告)を、ATT(トラッキングの許可)に同意した人に、パーソナライズして出しています。トラッキングは、実際にしているので、true が正しい宣言です。直すべきは、空のドメインのほうでした。
直し方:ドメインを書く
ただ、Google は、AdMob 向けの、トラッキングドメインの公式な一覧を、出していません。そこで、広く使われている広告配信のドメインを、追加しました。
googlesyndication.comgoogleadservices.comdoubleclick.netgoogle.com
Release 構成で、ビルドが通る(xcodebuild が BUILD SUCCEEDED)ことは、確認しています。
確認できていないこと
コミットに書かれているのは、ビルドが通ることまでです。修正したビルドを、Apple が受け付けたかは、この記事を書いた時点で、記録にありません。また、ここに挙げたドメインの一覧が、AdMob のトラッキングに使われるドメインを、すべて覆っているかも、公式の一覧が無いため、確かめられていません。
分かったこと
宣言と中身は、機械に、突き合わせられる。
- 「する」と宣言したら、その中身(ドメイン)も書く。片方だけでは、矛盾として弾かれます。
- 弾かれたとき、宣言のほうを消して、逃げない。実際にしていることなら、宣言を正しいまま、中身を補います。
- 公式の一覧が無いものは、「どこまで確かめたか」を、書いておく。
この記事は、コミット(2026年10月6日)の記録から書きました。
この話に出てくるもの
- App Store の審査で止まった四つ — ITMS-91064 を含む、審査の手前の記録
- App Store 審査で「Guideline 2.1 Information Needed」が届いた — このあとの記録
ほかの記録
- App Store の審査で止まった四つ:iPad のスクショ、ITMS-91064、アカウント削除、投稿の通報 — iPad スクリーンショットの要求、自動検査の ITMS-91064(NSPrivacyTrackingDomains が空)、アカウント削除(5.1.1(v))、投稿の通報(1.2)。審査に出す手前で止まった四つと、その直し方。
- App Store 審査で「Guideline 2.1 Information Needed」が届いた:求められた6つ — 初めての審査で届いたのは、不合格ではなく Guideline 2.1「Information Needed」だった。求められた六つ(実機の画面収録、目的、外部サービスの一覧など)と、前に直したこととのつながり。
- 一括処理が「全記事」に当たった:書く前に数える、テストは壊して確かめる — 記事の状態をまとめて直す処理が、全記事に当たり、18件が誤って表示に戻った。履歴から戻した経緯と、テストが効くかを、規則を1つずつ外して確かめた記録。
コメント
感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。
押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。