🐥

PrivacyManifest for Flutter

2024/03/13に公開

初めに

2023年6月6日のWWDC2023でiOSはPrivacyManifestの対応を必要とすると発表がありました。
社内でも対応が必要となったため、備忘録として記事としています。

PrivacyManifestってなに?

そもそもですが、PrivacyManifestの正体はアプリオーナーが「どのデータがユーザーから集められ、どのように使われているのか?」を明確にするための「アプリベンダーやアドテクベンダーのプライバシー保護パターンを記した、標準化されたファイルみたいなもの」らしいです。(以下から引用)
https://digiday.jp/platforms/wtf-is-apples-privacy-manifests/

Appleはフィンガープリントを嫌っているんですね。

そしてAppleは一般的によく使われるSDKたちに対して、「君たちは否応なく必須だよ」と言ってます。
https://developer.apple.com/support/third-party-SDK-requirements/

期限

原則、2024年4月末までとされています。
それ以降にSDKやアプリをリリースするならPrivacyManifestの対応は必須のようです。

Flutterアプリ開発者に求められる対応

参考
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests

https://buildersbox.corp-sansan.com/entry/2024/02/09/173000

https://techblog.openwork.co.jp/entry/ios-privacymanifest

①Flutterのバージョンを3.19系まで上げる

3.19 リリースノートの中にAdd xcprivacy privacy manifest to iOS framework という変更が含まれました。
Flutter SDK自体もPrivacy Manifests対応が必須とAppleに名指しされていたので、その対応がされたという内容です。

つまり、Flutterはバージョン3.19系以上にしないといけないということですね....。
(特定のバージョン依存などの理由でFlutterバージョンをあげていなかったプロジェクトと向き合わなくてはいけないタイミングが唐突に来てしまいました。頭を悩ませる方も多いのでは..😭)

②導入しているパッケージをPrivacyManifestに対応しているバージョンまで上げる

Flutterの次は導入しているパッケージです。
冒頭で紹介したSDKたちがPrivacyManifestに対応したかまとめてくれている記事がありました。
https://qiita.com/tkou15/items/f34b076fdb042e2d5cbf

上記以外のパッケージについては、依存関係があるものを除いてバージョンを上げる必要はありません。

少なくともこれらのパッケージはPrivacyManifestに対応したバージョンまで上げる必要があります。

また、webview_flutterのリポジトリではプライバシー マニフェスト要件に対処するというissueのなかに、SDKがデータを収集しない場合でも「空のマニフェストをバンドルする必要があります。」とガイダンスを受けたとやりとりしているコメントもありました。

これが本当なら使用している全てのパッケージが対応してくれているか調査する必要がありますね。。。。

Change LogやReadMeに情報がなければissueを立てたりPR投げたり、未対応のものはパッケージを代替する必要があります。

③Flutterアプリ自体のPrivacyManifest対応をする

iosフォルダをXcodeで開き、PrivacyInfo.xcprivacyを作成。
作成時のファイル名はデフォルトでOK。
Targetには対象のアプリのRunnerを指定します。

🔽

🔽
Apple Developer公式によると、Appの場合はNSPrivacyAccessedAPITypesの指定だけでよさそうです。
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files

今回私が登録したAppで使用しているAPIの指定👇

まとめ

大幅にバージョンアップが必要だったりパッケージを代替する必要があるプロジェクトは結構しんどそうです。

実対応はこれから行うので、こちらもわかりやすく記事残していければと思います。
テスト含め、頑張って対応していきたい所存です。

こんな感じで今回は無事にPrivacyManifestの対応が完了しました!
まだ対応が必要なプロジェクトが残っているので、また何かわかったものがあれば追記していきたいと思います!

Discussion