2024年3月13日からApp Storeへアプリを審査提出した時、privacy manifest対応をしてないアプリの場合、警告メールが届くようになりました。
この記事では、私がリリースしているアプリを使って警告メールが出ないようにするまでをお伝えしてます。
また、privacy manifest未対応の「RxSwift系」ライブラリが6.6.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側で対象となる処理を削除したため、privacy manifest対応不要SDKになったようです。
privacy manifest対応について
承認される理由が必要なAPIを使用している新規アプリまたは既存アプリのアップデートをApp Store Connectにアップロードする際に、アプリのプライバシーマニフェストに理由が含まれていない場合は、その旨をEメールでお知らせします。これは、App Store Connectの既存の通知に追加されます。
App Store Connectに新規アプリまたはアップデートされたアプリをアップロードする際に、アプリのコードが使用されるリストされたAPIの場合、承認された理由を含めることが義務付けられます。APIの使用が認められる理由によるものでない場合は、(該当APIを使用する以外の)代替方法を見つけてください。また、一般的に使用されているサードパーティSDKのリストに含まれている新しいサードパーティSDKを追加した場合は、これらのAPI、プライバシーマニフェスト、署名の要件がそのSDKに適用されます。必ず、プライバシーマニフェストが含まれているバージョンのSDKを使用してください。SDKがバイナリ依存として追加される場合は、署名も必須になるため注意してください。
詳細:Apple Developer Documentation
APIグループ | アクセス対象 | Key名 | メソッド |
---|---|---|---|
File timestamp APIs | ファイルタイムスタンプ | NSPrivacyAccessedAPICategoryFileTimestamp | creationDate modificationDate fileModificationDate contentModificationDateKey creationDateKey getattrlist(_:_:_:_:_:) getattrlistbulk(_:_:_:_:_:) fgetattrlist(_:_:_:_:_:) stat fstat(_:_:) fstatat(_:_:_:_:) lstat(_:_:) getattrlistat(_:_:_:_:_:_:) |
System boot time APIs | システムの起動時間 | NSPrivacyAccessedAPICategorySystemBootTime | systemUptime mach_absolute_time() |
Disk space APIs | 使用可能なディスク領域 | NSPrivacyAccessedAPICategoryDiskSpace | volumeAvailableCapacityKey volumeAvailableCapacityForImportantUsageKey volumeAvailableCapacityForOpportunisticUsageKey volumeTotalCapacityKey systemFreeSize systemSize statfs(_:_:) statvfs(_:_:) fstatfs(_:_:) fstatvfs(_:_:) getattrlist(_:_:_:_:_:) fgetattrlist(_:_:_:_:_:) getattrlistat(_:_:_:_:_:_:) |
Active keyboard APIs | アクティブなキーボードのリスト | NSPrivacyAccessedAPICategoryActiveKeyboards | activeInputModes |
User defaults APIs | UserDefaults | NSPrivacyAccessedAPICategoryUserDefaults | UserDefaults |
アプリ内に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
警告メール
警告メールは届かない
そのため、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で警告メールが来ていて驚きました。。。
また何かありましたら共有させていただきます。