privacy manifest未対応アプリへの警告メールを受け取った件

2024年3月13日からApp Storeへアプリを審査提出した時、privacy manifest対応をしてないアプリの場合、警告メールが届くようになりました。

この記事では、私がリリースしているアプリを使って警告メールが出ないようにするまでをお伝えしてます。

また、privacy manifest未対応の「RxSwift系」ライブラリが6.6.0(3/15時点最新版)でどうなるかをお伝えします。

結論

Google-Mobile-Ads-SDK (11.1.0)は警告メールが届くため、SDK側で対応されなければ5/1以降リリースできない。

Google-Mobile-Ads-SDK (11.1.0)_3/15時点最新版を入れた場合、下記の警告メールが届きました。

ITMS-91053: Missing API declaration – Your app’s code in the “[アプリ名]” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryDiskSpace. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.

アプリ・SDKどちらの対応不備でも警告メールの内容は同じ

「利用しているAPIの宣言」の不備がアプリでもサードパーティーSDKでも警告メールの内容は同じ

RxCocoa (6.6.0)、RxRelay (6.6.0)、 RxSwift (6.6.0)は警告メールが届かない

SDK側で対象となる処理を削除したため、privacy manifest対応不要SDKになったようです。

privacy manifest対応について

Appleの発表

3月13日以降:警告メールが届く

承認される理由が必要なAPIを使用している新規アプリまたは既存アプリのアップデートをApp Store Connectにアップロードする際に、アプリのプライバシーマニフェストに理由が含まれていない場合は、その旨をEメールでお知らせします。これは、App Store Connectの既存の通知に追加されます。

審査(App Review)提出しないとprivacy manifestに対応しているかチェックされない(3/15時点)

上記のAppleニュースの見ると、App Store Connectにアップデートした時点でチェックされそうですが実際はApp Reviewに提出して1分程で警告メールが届きます。

5月1日以降:リジェクトされる

App Store Connectに新規アプリまたはアップデートされたアプリをアップロードする際に、アプリのコードが使用されるリストされたAPIの場合、承認された理由を含めることが義務付けられます。APIの使用が認められる理由によるものでない場合は、(該当APIを使用する以外の)代替方法を見つけてください。また、一般的に使用されているサードパーティSDKのリストに含まれている新しいサードパーティSDKを追加した場合は、これらのAPI、プライバシーマニフェスト、署名の要件がそのSDKに適用されます。必ず、プライバシーマニフェストが含まれているバージョンのSDKを使用してください。SDKがバイナリ依存として追加される場合は、署名も必須になるため注意してください。

privacy manifest対応でやること

アプリ開発者がやること
  • アプリで利用しているAPIの宣言(UserDefaultsなど)
  • 「アプリのプライバシー」の宣言
サードパーティSDK開発者がやること こちらの説明は省きます。
  • サードパーティSDK内でPrivacyInfo.xcprivacy対応

アプリで利用しているAPIの宣言

詳細:Apple Developer Documentation

APIグループアクセス対象Key名メソッド
File timestamp APIsファイルタイムスタンプNSPrivacyAccessedAPICategoryFileTimestampcreationDate
modificationDate
fileModificationDate
contentModificationDateKey
creationDateKey
getattrlist(_:_:_:_:_:)
getattrlistbulk(_:_:_:_:_:)
fgetattrlist(_:_:_:_:_:)
stat
fstat(_:_:)
fstatat(_:_:_:_:)
lstat(_:_:)
getattrlistat(_:_:_:_:_:_:)
System boot time APIsシステムの起動時間NSPrivacyAccessedAPICategorySystemBootTimesystemUptime
mach_absolute_time()
Disk space APIs使用可能なディスク領域NSPrivacyAccessedAPICategoryDiskSpacevolumeAvailableCapacityKey
volumeAvailableCapacityForImportantUsageKey
volumeAvailableCapacityForOpportunisticUsageKey
volumeTotalCapacityKey
systemFreeSize
systemSize
statfs(_:_:)
statvfs(_:_:)
fstatfs(_:_:)
fstatvfs(_:_:)
getattrlist(_:_:_:_:_:)
fgetattrlist(_:_:_:_:_:)
getattrlistat(_:_:_:_:_:_:)
Active keyboard APIsアクティブなキーボードのリストNSPrivacyAccessedAPICategoryActiveKeyboardsactiveInputModes
User defaults APIsUserDefaultsNSPrivacyAccessedAPICategoryUserDefaultsUserDefaults

「アプリのプライバシー」の宣言

アプリ内にPrivacyInfo.xcprivacyファイルを作成し

App Storeのページに表示されている「アプリのプライバシー」と同じ内容を宣言する。

警告メール受信から解決までの流れ

アプリにあるライブラリ

ライブラリ名Appleの対応指示
有無
対応状況
RxSwiftあり未対応
RxCocoaあり未対応
RxBlockingあり未対応
Firebase/Analyticsあり対応済み
Firebase/RemoteConfigあり対応済み
Google-Mobile-Ads-SDKなし対応不要のはず
Firebase/Crashlyticsあり対応済み
Parchmentなし対応不要
Instructionsなし対応不要

届いた警告メール(アプリ側の対応済み)

App Store Connect

Hello,

We noticed one or more issues with a recent submission for App Store review for the following app:

・[アプリ名]
・Version 1.12
・Build 30
Although submission for App Store review was successful, you may want to correct the following issues in your next submission for App Store review. Once you’ve corrected the issues, upload a new binary to App Store Connect.

ITMS-91053: Missing API declaration – Your app’s code in the [アプリ名] file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryDiskSpace. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.

Apple Developer Relations

警告メール
NSPrivacyAccessedAPICategoryDiskSpaceは使っていないはず。。。

アプリ側でNSPrivacyAccessedAPICategoryDiskSpaceの実装はなく、ライブラリ側の実装を確認

Google-Mobile-Ads-SDKを削除してApp Review提出

警告メールは届かない

そのため、Google-Mobile-Ads-SDKが原因で警告メールが届いていたことがわかりました。

Google-Mobile-Ads-SDKはAppleからの指示リストにはなかったのに。。。😢

さらに、RxSwift系はprivacy manifestに対応不要ということがわかりました。

まとめ

  • 「利用しているAPIの宣言」の不備がアプリでもサードパーティーSDKでも警告メールの内容は同じ
  • Google-Mobile-Ads-SDK (11.1.0)はSDK側で対応が必要
  • RxSwift系(6.6.0)はSDK側で対応が不要

おわりに

最後までご覧いただきありがとうございます。

RxSwift系がprivacy manifest対応が必要か気になっていたので試してみたら

まさかのApple対応必須SDKリストにないGoogle-Mobile-Ads-SDKで警告メールが来ていて驚きました。。。

また何かありましたら共有させていただきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA