Apple’s message:
ITMS-91053: Lacking API declaration - Your app’s code within the “{app identify}” file references a number of APIs that require causes, together with the next API classes: NSPrivacyAccessedAPICategoryFileTimestamp. Whereas no motion is required presently, beginning Could 1, 2024, whenever you add a brand new app or app replace, you need to embody a NSPrivacyAccessedAPITypes array in your app’s privateness manifest to offer accredited causes for these APIs utilized by your app’s code. For extra particulars about this coverage, together with an inventory of required cause APIs and accredited causes for utilization, go to: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Lacking API declaration - Your app’s code within the “{app identify}” file references a number of APIs that require causes, together with the next API classes: NSPrivacyAccessedAPICategoryDiskSpace. Whereas no motion is required presently, beginning Could 1, 2024, whenever you add a brand new app or app replace, you need to embody a NSPrivacyAccessedAPITypes array in your app’s privateness manifest to offer accredited causes for these APIs utilized by your app’s code. For extra particulars about this coverage, together with an inventory of required cause APIs and accredited causes for utilization, go to: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Lacking API declaration - Your app’s code within the “{app identify}” file references a number of APIs that require causes, together with the next API classes: NSPrivacyAccessedAPICategorySystemBootTime. Whereas no motion is required presently, beginning Could 1, 2024, whenever you add a brand new app or app replace, you need to embody a NSPrivacyAccessedAPITypes array in your app’s privateness manifest to offer accredited causes for these APIs utilized by your app’s code. For extra particulars about this coverage, together with an inventory of required cause APIs and accredited causes for utilization, go to: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Lacking API declaration - Your app’s code within the “{app identify}” file references a number of APIs that require causes, together with the next API classes: NSPrivacyAccessedAPICategoryUserDefaults. Whereas no motion is required presently, beginning Could 1, 2024, whenever you add a brand new app or app replace, you need to embody a NSPrivacyAccessedAPITypes array in your app’s privateness manifest to offer accredited causes for these APIs utilized by your app’s code. For extra particulars about this coverage, together with an inventory of required cause APIs and accredited causes for utilization, go to: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
So, I did the next to sort out the difficulty:
- Improve third social gathering SDKs which can be listed within the required checklist of Apple in order that they’ve their manifest.
- Out of the 4 API classes, solely
NSPrivacyAccessedAPICategoryUserDefaults
can also be wanted on the app facet (as my app makes use of UserDefaults), so I added it to the app’sPrivacyInfo.xcprivacy
.
Nonetheless, after I submitted the brand new app, Apple nonetheless responded with the identical warning. My understanding is privateness manifests of the App and SDKs are merged into one (or equal). Is that appropriate? What am I lacking then?
Swift Packages and variations
The log from the xcodebuild
[08:11:49]: ▸ Resolved supply packages:
[08:11:49]: ▸ GoogleAppMeasurement: https://github.com/google/GoogleAppMeasurement.git @ 10.22.0
[08:11:49]: ▸ GoogleDataTransport: https://github.com/google/GoogleDataTransport.git @ 9.4.0
[08:11:49]: ▸ GTMSessionFetcher: https://github.com/google/gtm-session-fetcher.git @ 3.3.1
[08:11:49]: ▸ UIPiPView: [email protected]:torufuruya/UIPiPView.git @ b3183e7
[08:11:49]: ▸ CwlCatchException: https://github.com/mattgallagher/CwlCatchException.git @ 2.1.1
[08:11:49]: ▸ GoogleSignIn: https://github.com/google/GoogleSignIn-iOS @ 7.1.0
[08:11:49]: ▸ CwlPreconditionTesting: https://github.com/mattgallagher/CwlPreconditionTesting.git @ 2.1.0
[08:11:49]: ▸ AudioKit: https://github.com/AudioKit/AudioKit.git @ 5.5.7
[08:11:49]: ▸ nanopb: https://github.com/firebase/nanopb.git @ 2.30910.0
[08:11:49]: ▸ AppCheck: https://github.com/google/app-check.git @ 10.18.0
[08:11:49]: ▸ Pulse: https://github.com/kean/Pulse @ 1.1.0
[08:11:49]: ▸ Fast: https://github.com/Fast/Fast.git @ 6.1.0
[08:11:49]: ▸ SwiftlySearch: https://github.com/thislooksfun/SwiftlySearch.git @ 1.2.5
[08:11:49]: ▸ GoogleUserMessagingPlatform: https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git @ 2.3.0
[08:11:49]: ▸ swift-video-generator: https://github.com/dev-labs-bg/swift-video-generator.git @ 1.4.1
[08:11:49]: ▸ AdvancedScrollView: https://github.com/dmytro-anokhin/advanced-scrollview.git @ 0.0.6
[08:11:49]: ▸ GTMAppAuth: https://github.com/google/GTMAppAuth.git @ 4.1.1
[08:11:49]: ▸ Firebase: https://github.com/firebase/firebase-ios-sdk.git @ 10.22.0
[08:11:49]: ▸ SwiftyStoreKit: https://github.com/bizz84/SwiftyStoreKit.git @ 0.16.4
[08:11:49]: ▸ Mocker: https://github.com/WeTransfer/Mocker.git @ 3.0.1
[08:11:49]: ▸ leveldb: https://github.com/firebase/leveldb.git @ 1.22.3
[08:11:49]: ▸ Guarantees: https://github.com/google/guarantees.git @ 2.4.0
[08:11:49]: ▸ abseil: https://github.com/google/abseil-cpp-binary.git @ 1.2022062300.1
[08:11:49]: ▸ URLImage: https://github.com/dmytro-anokhin/url-image @ 3.1.1
[08:11:49]: ▸ AppAuth: https://github.com/openid/AppAuth-iOS.git @ 1.7.3
[08:11:49]: ▸ SwiftProtobuf: https://github.com/apple/swift-protobuf.git @ 1.25.2
[08:11:49]: ▸ swift-log: https://github.com/apple/swift-log.git @ 1.4.4
[08:11:49]: ▸ gRPC: https://github.com/google/grpc-binary.git @ 1.49.2
[08:11:49]: ▸ Mantis: https://github.com/guoyingtao/Mantis.git @ 2.7.0
[08:11:49]: ▸ Get: https://github.com/kean/Get.git @ 1.0.4
[08:11:49]: ▸ Fakery: https://github.com/vadymmarkov/Fakery @ 5.1.0
[08:11:49]: ▸ Nimble: https://github.com/Fast/Nimble.git @ 11.2.1
[08:11:49]: ▸ GoogleMobileAds: https://github.com/googleads/swift-package-manager-google-mobile-ads.git @ 11.2.0
[08:11:49]: ▸ GoogleUtilities: https://github.com/google/GoogleUtilities.git @ 7.13.1
[08:11:49]: ▸ ImagePickerView: https://github.com/ralfebert/ImagePickerView @ 0.5.0
[08:11:49]: ▸ InteropForGoogle: https://github.com/google/interop-ios-for-google-sdks.git @ 100.0.0
SDKs declaring the reported API classes
The outcome I grep the API classes instantly within the swift package deal checkout folder: ~/Library/Developer/Xcode/DerivedData/{app identify}/SourcePackages/checkouts/
NSPrivacyAccessedAPICategoryFileTimestamp
➜ checkouts grep NSPrivacyAccessedAPICategoryFileTimestamp . -lr
./firebase-ios-sdk/FirebaseDynamicLinks/Sources/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/Crashlytics/Assets/PrivacyInfo.xcprivacy
./grpc-binary/grpcpp-Wrapper/Assets/PrivacyInfo.xcprivacy
./grpc-binary/grpc-Wrapper/Assets/PrivacyInfo.xcprivacy
./grpc-binary/openssl-grpc-Wrapper/Assets/PrivacyInfo.xcprivacy
./gtm-session-fetcher/Sources/LogView/Assets/PrivacyInfo.xcprivacy
./GoogleUtilities/GoogleUtilities/Privateness/Assets/PrivacyInfo.xcprivacy
NSPrivacyAccessedAPICategoryDiskSpace
No SDKs. It will need to have used within the Firebase Crashlytics however it appears to be eliminated within the newest model.
# 10.22.0
- [fixed] Power validation or rotation of FIDs for FirebaseSessions.
- [changed] Eliminated calls to statfs within the Crashlytics SDK to adjust to Apple Privateness Manifests. This modification removes help for amassing Disk Area Free in Crashlytics studies.
I confirmed no different APIs that require this coverage listed within the official doc (e.g. statfs
) had been utilized in any SDKs.
NSPrivacyAccessedAPICategorySystemBootTime
➜ checkouts grep NSPrivacyAccessedAPICategorySystemBootTime . -lr
./firebase-ios-sdk/Crashlytics/Assets/PrivacyInfo.xcprivacy
./grpc-binary/grpcpp-Wrapper/Assets/PrivacyInfo.xcprivacy
./grpc-binary/grpc-Wrapper/Assets/PrivacyInfo.xcprivacy
./grpc-binary/openssl-grpc-Wrapper/Assets/PrivacyInfo.xcprivacy
NSPrivacyAccessedAPICategoryUserDefaults
➜ checkouts grep NSPrivacyAccessedAPICategoryUserDefaults . -lr
./GoogleSignIn-iOS/GoogleSignIn/Sources/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseDynamicLinks/Sources/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/Crashlytics/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseCore/Inner/Sources/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseCore/Sources/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseAuth/Sources/Assets/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseRemoteConfig/Swift/Assets/PrivacyInfo.xcprivacy
./gtm-session-fetcher/Sources/Core/Assets/PrivacyInfo.xcprivacy
./GoogleUtilities/GoogleUtilities/Privateness/Assets/PrivacyInfo.xcprivacy