AppleはWWDC23でアプリのプライバシー管理に革命的な変更を導入し、2024年5月1日から「Privacy Manifests」への対応が必須となります。そのため、Privacy Manifestsに対応していないアプリは新規申請・アップデート審査時にリジェクトされてしまう。
対応済と報告しているサードパーティSDKの中に実は、不備があるSDKがあります。今回は、その調べ方をお伝えします。
Privacy Manifests対応でやること
- アプリで利用しているAPIの宣言
- 「アプリのプライバシー」の宣言
- サードパーティSDKでの PrivacyInfo.xcprivacy 対応
Appleは、APIごとにグループ分けをし、それぞれのAPIがどのプライバシーカテゴリに該当するかを明確にしています。
開発者は自身のアプリが使用しているAPIをチェックし、それぞれの利用理由をPrivacyInfo.xcprivacy
ファイルに宣言する必要があります。
APIグループ | アクセス対象 | Key名 | 検索する文字列 | 宣言理由 |
---|---|---|---|---|
File timestamp APIs | ファイルのタイムスタンプ | NSPrivacyAccessedAPICategoryFileTimestamp | creationDate modificationDate fileModificationDate contentModificationDateKey creationDateKey getattrlist(_:_:_:_:_:) getattrlistbulk(_:_:_:_:_:) fgetattrlist(_:_:_:_:_:) stat fstat(_:_:) fstatat(_:_:_:_:) lstat(_:_:) getattrlistat(_:_:_:_:_:_:) | DDA9.1 C617.1 3B52.1 0A2A.1 |
System boot time APIs | システム起動時間 | NSPrivacyAccessedAPICategorySystemBootTime | systemUptime mach_absolute_time() | 35F9.1 8FFB.1 3D61.1 |
Disk space APIs | 使用可能なディスク容量 | NSPrivacyAccessedAPICategoryDiskSpace | volumeAvailableCapacityKey volumeAvailableCapacityForImportantUsageKey volumeAvailableCapacityForOpportunisticUsageKey volumeTotalCapacityKey systemFreeSize systemSize statfs(_:_:) statvfs(_:_:) fstatfs(_:_:) fstatvfs(_:_:) getattrlist(_:_:_:_:_:) fgetattrlist(_:_:_:_:_:) getattrlistat(_:_:_:_:_:_:) | 85F4.1 E174.1 7D9E.1 B728.1 |
Active keyboard APIs | アクティブなキーボードのリスト | NSPrivacyAccessedAPICategoryActiveKeyboards | activeInputModes | 3EC4.1 54BD.1 |
User defaults APIs | UserDefaults | NSPrivacyAccessedAPICategoryUserDefaults | UserDefaults | CA92.1 1C8F.1 C56D.1 AC6B.1 |
1−1、上記のAPIグループをアプリ内で使用してるかソース内検索をする
1−2、使用していた場合は、決められた理由の中から該当するものをPrivacyInfo.xcprivacy(Privacy Manifests)に明記する
App Storeで公開する際には、「アプリのプライバシー」でどのようなデータが収集されるかをユーザーに告知する必要があります。これらの情報も同様にPrivacyInfo.xcprivacy
に記載する必要があります。
2−1、AppStore上に宣言している「アプリのプライバシー」の宣言と同じ内容をPrivacyInfo.xcprivacyに記載する
サードパーティSDKのPrivacyInfo.xcprivacy対応も必要です
Appleが一部対応必須サードパーティSDKを名指ししています。
名指しされていないサードパーティSDKも1のAPIを使用していたら対応が必須。
3−1、アプリで使用しているサードパーティSDKが1のAPIを使用しているか調査
3−2、使用していた場合、そのサードパーティSDKがPrivacyInfo.xcprivacy対応をしているか調査 対応していた場合
3−3、対応版のバージョンを取り込む
※PrivacyInfo.xcprivacyがあってもAPIの宣言がされていない場合があります。そのため、確認が必要です。
対応していなかった場合
3−4、下記の対応をする
・ GItHubのissueを確認し、もしなかったら問い合わせて対応してもらう
・ GitHubを見て、最終更新日が相当古いものは、別のサードパーティSDKに変えるか、SDKのソースをまるコピーしてプロジェクトに入れ自分でPrivacyInfo.xcprivacy対応する
- 検索対象を「In Pods.xcodeproj」にする
- 「Matching Case」に設定する
- 検索文字列を上記の[検索する文字列]を入れる
- 使用している箇所を確認する
- ライブラリ名を確認する
- project navigatorをクリック
- 先ほど確認したライブラリ名を選択
- 「PrivacyInfo.xcprivacy」ファイルがあるか確認する
- あった場合、その中に理由が宣言されているか確認
※なかった場合は、GitHubのissueで問い合わせる
PrivacyInfo.xcprivacyの実装方法
具体的な実装方法については、クラスメソッドの記事に詳しい手順が記載されています。
このガイドに従うことで、スムーズにPrivacy Manifestsへの対応が進められます。
まとめ
アプリ開発者がやるべきことは下記の3点です。
3番目のサードパーティSDKでの PrivacyInfo.xcprivacy 対応については、PrivacyInfo.xcprivacyファイルは、あってもちゃんとAPI使用理由が記載されていない場合があるため、気をつける必要があります。
- アプリで利用しているAPIの宣言
- 「アプリのプライバシー」の宣言
- サードパーティSDKでの PrivacyInfo.xcprivacy 対応
最後に
最後までご覧いただきありがとうございます。
WWDC23で発表があってから対応必須期限が2024年5月1日以降になり、その対応期限も近づいてきました。
5月1日以降に実際にアプリを審査提出してみないと実際どうなるかはわかりません。
そのため、余裕を持ったアプリ開発を目指してください。