【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

この記事からわかること

  • Xcode/iOSアプリPrivacy Manifests対応する方法
  • PrivacyInfo.xcprivacyファイルとは?
  • NSPrivacyCollectedDataTypesNSPrivacyAccessedAPITypesに設定する値とは?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

参考資料

公式リファレンス:App Storeへの提出におけるプライバシー要件のアップデート
公式リファレンス:App Storeのプライバシーに関する最新情報
公式リファレンス:Get started with privacy manifests
2024年春以降、Privacy Manifests未対応のiOSアプリはリジェクトされてしまう

Privacy Manifestsとは?

Privacy Manifests」はAppleがWWDC23で発表したプライバシーの取り扱いに関する決め事です。ここでいうプライバシーは「アプリやサードパーティSDK(ライブラリ)が収集するデータ」のことを指しています。要するに公開するアプリが収集するデータを適切にユーザーに知らせるための仕組みが変更になったということです。

これまではApp Store Connectでアプリを審査に出す段階でプライバシーに関する設定をしてきましたが、これからはそれだけでなくアプリ内とサードパーティSDK(ライブラリ)内に専用のファイル(PrivacyInfo.xcprivacy)を作成しておく必要があるようです。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

対応すること

Privacy Manifestsに対応するためにやるべきことは大きく分けて以下の2つです。

  1. アプリにPrivacyInfo.xcprivacyを設置
  2. サードパーティSDK(ライブラリ)にPrivacyInfo.xcprivacyを設置

2つと言いましたがアプリ開発者がやるのは自身のアプリに「PrivacyInfo.xcprivacy」を設置するだけです。サードパーティSDK(ライブラリ)の対応はサードパーティSKD開発側の対応を待つしかないので使用するサードパーティSDKに「PrivacyInfo.xcprivacy」ファイルが設置されているかどうかを確認すればひとまずOKだと思います。

アプリにPrivacyInfo.xcprivacyを設置

リリースしている自分のアプリに「PrivacyInfo.xcprivacy」を設置し、中に必要なプライバシー情報を記述する必要があります。記述する内容はアプリの種類や使用しているSKDによって異なるので1つ1つ設定をしなければなりません。

「PrivacyInfo.xcprivacy」に設定しなければいけないのは以下の4つです。設定方法は後述しています。

公式リファレンス:Privacy manifest files

1.PrivacyInfo.xcprivacyファイルの追加と準備

まずはアプリに「PrivacyInfo.xcprivacy」をファイルを追加します。プロジェクトを開き「New File..」から「App Privacy」を探しクリックします。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

ファイル名は「PrivacyInfo.xcprivacy」のままにしておきデフォルトではターゲットが外れているのでチェックを入れて作成します。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

「PrivacyInfo.xcprivacy」はplist(プロパティリスト)なのでキーと値の形式で設定値を記述していきます。

追加された「PrivacyInfo.xcprivacy」は空(ルートにApp Privacy Configurationのみ)の状態なのでここに必要なプライバシーを追加していきます。追加するプライバシーはApp Store Connectでアプリを審査に出す段階で設定するプライバシーと同じものです。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

まずは大枠となるNSPrivacyCollectedDataTypes(Privacy Nutrition Label Types)NSPrivacyAccessedAPITypes(Privacy Accessed API Types)を追加しておきます。上記の状態の中身が以下になります。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>NSPrivacyCollectedDataTypes</key>
	<array>
		<dict>
			<key>NSPrivacyCollectedDataType</key>
			<string></string>
			<key>NSPrivacyCollectedDataTypeLinked</key>
			<false/>
			<key>NSPrivacyCollectedDataTypeTracking</key>
			<false/>
			<key>NSPrivacyCollectedDataTypePurposes</key>
			<array>
				<string></string>
			</array>
		</dict>
	</array>
	<key>NSPrivacyAccessedAPITypes</key>
	<array>
		<dict/>
	</array>
</dict>
</plist>

2.NSPrivacyCollectedDataTypesの記述

NSPrivacyCollectedDataTypes(Privacy Nutrition Label Types)に記述するのはApp Store Connectでアプリを審査に出す段階で設定するプライバシーと同じものです。NSPrivacyCollectedDataTypes(Privacy Nutrition Label Types)の中にNSPrivacyCollectedDataType(item)を追加して同じものを全て記述していきます。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

各設定項目はApp Store Connectでのプライバシー設定と同じになっているのでそれぞれ該当する値を転記していけばOKです。

3.NSPrivacyAccessedAPITypesの記述

NSPrivacyAccessedAPITypesに記述するのはアプリorサードパーティSDKがアクセスするAPIタイプです。配列の中に以下の2つのキー値を持った辞書形式で値を設定していきます。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

Privacy Accessed API Type

APIタイプは以下の6種類に分かれています。詳細は「Describing use of required reason API」を参照してください。

Key名 アクセス対象
NSPrivacyAccessedAPICategoryFileTimestamp ファイルのタイムスタンプ
NSPrivacyAccessedAPICategorySystemBootTime システム起動時間
NSPrivacyAccessedAPICategoryDiskSpace 使用可能なディスク容量
NSPrivacyAccessedAPICategoryActiveKeyboards アクティブなキーボードのリスト
NSPrivacyAccessedAPICategoryUserDefaults UserDefaults

Privacy Accessed API Reasons

APIを使用する理由もApple側で定義済みの文字列を使用して指定します。こちらも詳細は「Describing use of required reason API」を参照してください。

例えばUserDefaultsの場合は以下の文字列から適切なものを指定します。

Key名 アクセス対象
CA92.1 アプリのみが読み書きする
1C8F.1 アプリと同じグループが読み書きする
C56D.1 サードパーティSDKがラッパー関数などで読み書きする
AC6B.1 MDMによって設定されたマネージドアプリ

確認方法

「PrivacyInfo.xcprivacy」ファイルの作成が終わったら定義に問題ないかをアップロードする前に確認することができます。プロジェクトをアーカイブした後に右クリック>「Generate Privacy Report」をクリックします。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

するとPDFファイルが出力されるので中身を見てみると「PrivacyInfo.xcprivacy」で定義した内容が見やすく表示されるのでApp Store Connect側で設定したプライバシー設定と相違がないか確認してみてください。

【Xcode/iOS】Privacy Manifestsに対応する方法!PrivacyInfo.xcprivacyとは

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index