2024 年 5 月 1 日以降、新しいアプリまたはアプリの更新をアップロードするときは、プライバシー マニフェスト ファイルにアプリまたはサードパーティ SDK が収集するデータと、使用する API が必要な理由を提供する必要があります。
自作アプリ (Kotango / Hajimari) の Privacy Manfest ファイルを作成してアプリの更新まで行いましたので、その手順を共有します。
開発環境 & アプリのライブラリー
開発環境
- “expo”: “~49.0.13”,
- “react”: “18.2.0”,
- “react-native”: “0.72.6”,
- Xcode Version 15.3 (15E204a)
- macOS sonoma 14.3.1(23D60)
アプリのライブラリー(抜粋)
- “expo-document-picker”: “~11.5.4”,
- “expo-file-system”: “~15.4.5”,
- “expo-tracking-transparency”: “~3.1.0”,
- “expo-sqlite”: “~11.3.3”,
- “@react-native-async-storage/async-storage”: “1.18.2”,
- “@react-native-firebase/analytics”: “^19.0.1”,
- “@react-native-firebase/app”: “^19.0.1”,
- “@react-native-firebase/auth”: “^19.0.1”,
- “@react-native-firebase/crashlytics”: “^19.0.1”,
- “react-native-google-mobile-ads”: “^12.3.0”,
- …
※プライバシーマニフェストと署名の対象となるSDKリストは ここ で確認できます。
・現時点で FirebaseAuth、FirebaseCore、FirebaseCrashlytics などが対象になっている
・react-native-firebase@19+ でプライバシーマニフェストに対応されている
プライバシーマニフェスト ファイル生成する
Xcode でアプリにプライバシーマニフェストを追加するには、
[ファイル] > [新しいファイル] を選択し、[リソース] セクションまで下にスクロールします。「App Privacy」ファイルの種類を選択し、「次へ」をクリックして、「Targets に各自のアプリ」をチェックして、「作成」をクリックします。
Xcode16.0では、File > New > File from Template… 順に Resource セクションまで行ける!
デフォルトでは、ファイルの名前は PrivacyInfo.xcprivacy です。 ファイル名は変更しないでください。
このプロパティ リスト ファイルの最上位で、次のキーを辞書に追加します。
- NSPrivacyTracking: 設定不要!
- NSPrivacyTrackingDomains:設定不要!
- NSPrivacyAccessedAPITypes:要設定!
NSPrivacyCollectedDataTypesNSPrivacyNutritionLabelTypes:要設定!
現時点で、NSPrivacyTracking、NSPrivacyTrackingDomainsの設定は、react-native-google-mobile-ads 及び expo-tracking-transparency の設定だけて済む!
NSPrivacyAccessedAPITypes 設定
プライバシー マニフェスト ファイルに理由を記述せずに、必須の理由 API(Required Reason API)を使用するアプリを App Store Connect にアップロードすると、Apple からアプリのプライバシー マニフェストに理由を追加するよう通知する電子メールが送信されます。 2024 年 5 月 1 日以降、プライバシー マニフェスト ファイルに必要な理由 API の使用が記載されていないアプリは、App Store Connect で受け入れられなくなります。
このリンクを確認しながら作成するAPIの詳細を決めます。
自作アプリ (Kotango / Hajimari) では広告 (Google AdMob) が含まれていて、SQLite にデータを CRUD & 一部の値は AsyncStorage を使用 & ユーザデータのバックアップ・リストア機能も実装しているので下記の必須の理由 API(Required Reason API) をそれぞれ定義しています。
Privacy Accessed API Type | Privacy Accessed API Reasons |
User defaults APIs | CA92.1 |
Disk space APIs | E174.1 |
System boot time APIs | 35F9.1 |
File timestamp APIs | 3B52.1 |
設定すると Xcode では⬇︎のように表示されます。
NSPrivacyNutritionLabelTypes 設定
1) サードパーティSDKのApple App Store のデータ開示要件(⬇︎)を確認しながら App Store Connect のアプリのプライバシーに定義する
自作アプリで確認すべきのは下記のSDKになります。
⬇︎⬇︎⬇︎
2) App Store Connect (ASC) で アプリのプライバシー を設定する
App Store Connectで、アプリ及びサードパーティ SDK が収集するデータを定義しておきます。
8種類のデータタイプが自作アプリから収集されますのでそれぞれ設定しておきます。
・おおよその場所、ユーザID、デバイスID、製品の操作、広告データ、クラッシュデータ、パフォーマンスデータ、その他の診断データ
3) Xcodeで、プライバシーマニフェストファイルの NSPrivacyCollectedDataTypes 配列に ASC のアプリのプライバシー内容を反映する
Xcodeでは、サードパーティ SDK が収集するデータの種類は自動で反映されますので定義する必要はありません。(Firebase は 19+ からプライバシーマニフェストに対応済み)
各データタイプごとに追加するキーは下記の四つです。
NSPrivacyCollectedDataType
:2) 項の 8種類のデータタイプ
NSPrivacyCollectedDataTypeLinked
:ユーザの個人情報に関連付けられる?
NSPrivacyCollectedDataTypeTracking
:トラッキング目的に使用?
NSPrivacyCollectedDataTypePurposes
:次の目的に使用:○○、△△、
完成すると⬇︎のように表示されます。
4) プライバシーレポートで作成した内容を確認する
4-1) Xcode > Product > Archive をクリックして新しいビルトを作成 > 右クリック > Generate Privacy Report をクリックしてプライバシーレポートを作成する
4-2) 保存された PDF ファイルを開き、ASC のアプリのプライバシーの内容と一致するかチェックする
プライバシーレポート(⬆︎)の味方:
User ID | ・FirebaseAuth SDKで定義されていてApp Functionality(アプリの機能) として使用される (匿名) ・Tacking? NO:トラッキング目的に使用されない ・Linked? YES:ユーザの個人情報に関連付けられる |
Device ID | ・Kotangoアプリで定義されていて Third-Party Advertising (サードパーティ広告) として使用される ・Tacking? YES:トラッキング目的に使用される ・Linked? YES:ユーザの個人情報に関連付けられる |
4-3) Xcode の Privacy Manifest ファイルと ASC のアプリのプライバシーの内容が相互一致したら Distribute App をクリックして ASC でアップロードする
以上、完了です!
まとめ
PrivacyAccessedAPITypes の設定で迷っている方は、PrivacyManifestファイルを作成せず ASC へアップロードしてみてください。そうするとApple からアプリのプライバシー マニフェストに理由を追加するよう通知する電子メールが送信されます(公式サイトより)。その内容通りに追加すればよりスムーズに済みます!
また、プライバシーマニフェストファイル作成済みのアプリのプライバシーの最終版は Kotango / Hajimari の App Store で確認できます。
コメント