【iOS】Privacy Manifests対応でAPIへのアクセス理由の選択項目が出てこなかった時の対処法

2024.01.29

2024年春以降、Pricacy Manifests未対応のアプリはリジェクトされてしまう話があり、対応を急がれている方も多いのでは無いでしょうか。対応必須時期はまだ未確定ながらも早めの対応を進めていきたいですね。

私も同様にPricacy Manigests対応をやるぞと意気込み、対応を進めているとちょっと困ってしまう事例が発生したので共有することにします。

環境

  • Xcode 15.2

はじめに

この記事では、基本的なPrivacy Manifestsの対応方法については説明しません。

対応方法については下記の記事にとてもわかりやすく記載されています。(とても参考にさせていただきました)

Required Reason APIの使用目的を記入しないといけない

今回のPrivacy Manifestsの対応項目として、Required Reason APIに該当するAPIを使用している場合は使用目的を記入しないといけません。

Describing use of required reason API内でRequired Reason APIを確認できます。

APIグループ アクセス対象
File timestamp APIs ファイルのタイムスタンプ
System boot time APIs システム起動時間
Disk space APIs 使用可能なディスク容量
Active keyboard APIs アクティブなキーボードのリスト
User defaults APIs UserDefaults

また、このリストは常に更新されるようなので最新の情報は是非公式ドキュメントで確認していただければと思います。

Apple continually reviews the list of required reason APIs and reasons for usage, and will update this article from time to time.

User defaultsの使用目的を入力する

Required Reason APIにUser defaults APIsが含まれており、アプリ内でUser defaults APIsを使用している為、使用目的を記入する必要がありました。

現在ドキュメント内で記載のある利用目的はこちらです。

概要
CA92.1 アプリ自体にのみアクセス可能な情報を読み書きするためにUser defaultsにアクセスする理由を宣言します。この理由では、他のアプリやシステムが書き込んだ情報の読み取りや、他のアプリがアクセスできる情報の書き込みは許可されません。
1C8F.1 アプリ自体と同じApp Groupに属するアプリ、App extensions、およびApp Clipsがアクセス可能な情報を読み書きするためのUser defaultsへのアクセス理由を宣言します。この理由では、同じApp Groupに属さないアプリ、App extensions、またはApp Clipsが書き込んだ情報の読み取りや、システムによって書き込まれた情報へのアクセスは許可されません。また、同じApp Groupに属さないアプリ、App extensions、または App Clips がアクセス可能な情報への書き込みも許可されません。
C56D.1 アプリがサードパーティのSDKから提供されるUser defaults APIのラッパー関数を使用し、アプリがそのラッパー関数を呼び出す場合にのみUser defaults APIにアクセスする理由を宣言します。この理由はサードパーティのSDKのみが宣言できます。この理由は、サードパーティのSDKが主にRequired Reason APIをラップするために作成された場合には宣言できません。この理由でアクセスされる情報やその派生情報は、サードパーティの SDK 自体の目的に使用されず、デバイス外に送信されてはなりません。
AC6B.1 MDMによって設定された管理対象のアプリ設定を取得するために、またはMDMを介してクエリ可能なフィードバック情報を保存するために、ユーザーデフォルトにアクセスする理由を宣言します。

User defaultsの使用用途がアプリ自体にのみアクセス可能な情報を読み書きするのみであれば、CA92.1を選択すれば良いですが、今回はアプリ自体とApp extensionsが書き込んだ情報を読み書きするアプリであった為、1C8F.1を使用目的として選択する必要がありました。

選択項目に1C8F.1が存在しない

実際に使用目的を入力しようとした際に選択項目に1C8F.1が存在しません。

同じように困っている人がいるようなので私の環境下だけではなさそうです。

使用目的を直接入力する

選択項目に使用目的が出てこない場合は、ドキュメントの値を参考に値を直接入力する。

この方法で入力した後にアプリ審査は通過しました。なので、一旦この対応法で問題なさそうだと思います。

おわりに

この入力の部分は、今後のXcodeのアップデートで解消されたら嬉しいですね。

参考