アプリを提出して、もう通ったと思った頃に Apple から1通のメールが届く。「あなたのアプリは理由が宣言されていない API を使っています」という、あの ITMS で始まる警告です。私自身、個人開発で複数のアプリを App Store と Google Play に出していますが、この通知を最初に受け取ったときは、何を直せばいいのか見当がつかず手が止まりました。
Rork が出力するのは Expo(React Native)のアプリで、内部では多くのネイティブ API とサードパーティ SDK が動いています。Apple は2024年以降、一部の API について「使う理由」をプライバシーマニフェストで宣言することを必須化しました。宣言が無いと、いまは警告メールですが、いずれリジェクトに格上げされます。Rork のプロジェクトで、この対応を自分のコード側とSDK側の両面から進めていきます。
「Required Reason API」と呼ばれる特定の API について、なぜ使うのかを所定のコードで宣言すること。
Required Reason API は、ファイルのタイムスタンプ、ディスク空き容量、システム起動時刻、UserDefaults といった、フィンガープリンティングに悪用されうる API 群です。正規の用途で使っているなら、決められた理由コードを宣言するだけで通ります。問題は、これらを「自分では直接呼んでいないのに、依存ライブラリが呼んでいる」ケースが大半だという点です。
まず警告メールの読み方を押さえる
提出後に届くメールには、たとえば「NSPrivacyAccessedAPICategoryUserDefaults の理由が宣言されていません」といった形で、不足している API カテゴリが列挙されます。ここを読み飛ばさないことが対処の出発点です。