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 right now, beginning Might 1, 2024, if you add a brand new app or app replace, it's essential to embrace a NSPrivacyAccessedAPITypes array in your appās privateness manifest to supply authorised causes for these APIs utilized by your appās code. For extra particulars about this coverage, together with a listing of required cause APIs and authorised 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 right now, beginning Might 1, 2024, if you add a brand new app or app replace, it's essential to embrace a NSPrivacyAccessedAPITypes array in your appās privateness manifest to supply authorised causes for these APIs utilized by your appās code. For extra particulars about this coverage, together with a listing of required cause APIs and authorised 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 right now, beginning Might 1, 2024, if you add a brand new app or app replace, it's essential to embrace a NSPrivacyAccessedAPITypes array in your appās privateness manifest to supply authorised causes for these APIs utilized by your appās code. For extra particulars about this coverage, together with a listing of required cause APIs and authorised 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 right now, beginning Might 1, 2024, if you add a brand new app or app replace, it's essential to embrace a NSPrivacyAccessedAPITypes array in your appās privateness manifest to supply authorised causes for these APIs utilized by your appās code. For extra particulars about this coverage, together with a listing of required cause APIs and authorised 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 get together SDKs which are listed within the required record of Apple in order that they’ve their manifest.
- Out of the 4 API classes, solely
NSPrivacyAccessedAPICategoryUserDefaults
can also be wanted on the app aspect (as my app makes use of UserDefaults), so I added it to the app’sPrivacyInfo.xcprivacy
.
Nevertheless, 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 right? 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 consequence I grep the API classes immediately 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/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/Crashlytics/Sources/PrivacyInfo.xcprivacy
./grpc-binary/grpcpp-Wrapper/Sources/PrivacyInfo.xcprivacy
./grpc-binary/grpc-Wrapper/Sources/PrivacyInfo.xcprivacy
./grpc-binary/openssl-grpc-Wrapper/Sources/PrivacyInfo.xcprivacy
./gtm-session-fetcher/Sources/LogView/Sources/PrivacyInfo.xcprivacy
./GoogleUtilities/GoogleUtilities/Privateness/Sources/PrivacyInfo.xcprivacy
NSPrivacyAccessedAPICategoryDiskSpace
No SDKs. It will need to have used within the Firebase Crashlytics nevertheless it appears to be eliminated within the newest model.
# 10.22.0
- [fixed] Drive validation or rotation of FIDs for FirebaseSessions.
- [changed] Eliminated calls to statfs within the Crashlytics SDK to adjust to Apple Privateness Manifests. This transformation removes help for amassing Disk House Free in Crashlytics stories.
I confirmed no different APIs that require this coverage listed within the official doc (e.g. statfs
) have been utilized in any SDKs.
NSPrivacyAccessedAPICategorySystemBootTime
ā checkouts grep NSPrivacyAccessedAPICategorySystemBootTime . -lr
./firebase-ios-sdk/Crashlytics/Sources/PrivacyInfo.xcprivacy
./grpc-binary/grpcpp-Wrapper/Sources/PrivacyInfo.xcprivacy
./grpc-binary/grpc-Wrapper/Sources/PrivacyInfo.xcprivacy
./grpc-binary/openssl-grpc-Wrapper/Sources/PrivacyInfo.xcprivacy
NSPrivacyAccessedAPICategoryUserDefaults
ā checkouts grep NSPrivacyAccessedAPICategoryUserDefaults . -lr
./GoogleSignIn-iOS/GoogleSignIn/Sources/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseDynamicLinks/Sources/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/Crashlytics/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseCore/Inside/Sources/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseCore/Sources/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseAuth/Sources/Sources/PrivacyInfo.xcprivacy
./firebase-ios-sdk/FirebaseRemoteConfig/Swift/Sources/PrivacyInfo.xcprivacy
./gtm-session-fetcher/Sources/Core/Sources/PrivacyInfo.xcprivacy
./GoogleUtilities/GoogleUtilities/Privateness/Sources/PrivacyInfo.xcprivacy