-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
App Store Connect warnings that API usage is not being declared by Firebase #12557
Comments
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight. |
Hi @Digipom, thanks for reporting and apologies for the trouble. I was able to reproduce the above behavior. There appears to be an issue with how R.R. API usage attribution is validated when using static frameworks. If you inspect the app bundle, you should see privacy manifests from Firebase that justify this API usage. But since the SDK symbols are statically linked into the main app, the SDK resource bundles do not seem to be taken into account when checking for R.R. API usage. We have filed a feedback with Apple and I will keep this thread updated. |
Hi, Do you know if these new privacy declarations mean that apps would have to explicitly ask for permission to report crashes via Firebase Crashlytics? For reference NSPrivacyAccessedAPICategorySystemBootTime 3D61.1 Information accessed for this reason, or any derived information, may be sent off-device only after the user affirmatively chooses to submit the specific bug report including system boot time information, and only for the purpose of investigating or responding to the bug report. |
Possibly related: swiftlang/swift-package-manager#7317 |
@ncooke3 I've been reading Apple's documentation and think I might have a clue. I saw you made a new release on the forked leveldb this repo uses that adds the PrivacyInfo file. Firebase does not use this version yet though. Do you think updating firebase to use leveldb 1.22.4 would solve the issue? |
@jjkaufman |
@paulb777 good point, but would it make sense to update min to 1.22.4 in Firebases Package.swift to ensure the warning / issues don't come up? Currently its 1.22.2 |
We will at some point, but wanted to preserve the optionality for now, since 1.22.2 is still functional and anyone who cares about the warning can update. |
I see a lot of apps on the interwebs are using Firebase and Google Maps are complaining about this, mainly that Apple does not merge the privacy codes. Any news are welcome. |
Thanks, @adrianvintu, that is the behavior I'm seeing. I was also able to reproduce when depending on SwiftPM targets from source. We have filed two feedback tickets with Apple for this (they aren't publicly visible but are FB13691093 & FB13687188). I don't yet have a response to share, but will update accordingly! |
I use CocoaPods to integrate Crashlytics included in Firebase Apple SDK 10.22.0, and when submitting for review on the App Store, I encountered the same warning as this issue. I statically link the framework with the following settings in the Podfile.
Although this issue is tagged as Swift Package Manager, is it the same issue that occurred in my environment when using CocoaPods? |
Same issue here with CocoaPods, I upgraded a few days ago Firebase to 10.23.1 and submitted for review and we still have the same warnings. Will SwiftPM fix also solve the issue when distributing the SDK through CocoaPods? |
Yes. The same issue occurs with CocoaPods when linking statically versus dynamically. As discussed above, as far as we can tell, this is an Apple issue, so it may help to send additional feedback to Apple. |
Thanks for the response; in our setup we are not explicitly specifying static linkage and still we are getting the warnings:
|
Hi, I'm experiencing the similar issue, having a warning from Apple regarding I've looked through Privacy manifest included with Firebase SDK 10.24.0, and I couldn't find any declaration of using these APIs Knowing there is a feature in PS: we are using dynamic linking with cocoapods |
There is no clear reason As a result, I have chosen If you feel another number is more fitting, please another. |
Hi @fannt & @adrianvintu, Crashlytics's disk space reporting feature was removed in 10.22.0, so the warning should not be originating from Crashlytics on versions 10.22.0 or later. |
Is the workaround for now to use CocoaPods with dynamic linking? All the SDKs I'm using have the privacy manifest, so does this pass Apple's validation? |
Hi, I think I have the same problem , using cocoadpods to, even if firebase sdk, crashlytics, messaging and other is up to date I still have the error for NSPrivacyAccessedAPICategoryDiskSpace and NSPrivacyAccessedAPICategorySystemBootTime. |
@ncooke3 why was this closed? |
This issue is still open. They closed a duplicate issue. EDIT: The number of subscribers on this issue has gotten fairly large so let's all take extra care to not spam the thread ❤️ |
Hello everyone, I process some research and find 7834c05, where missing api declaration was remove from source code So, Firebase/Crashlytics now full support apple third-party sdk In additional, some help you, for find library with missing api declaration:
|
I think there's an issue with GoogleUtilities not having a privacy manifest for each target: google/GoogleUtilities#150 (Relevant post from Apple Engineer: https://forums.developer.apple.com/forums/thread/742221?answerId=776008022#776008022) |
Firebase Firestore and GTMSessionFetcher are missing the FileTimeStampAPI key in their XCPrivacy file. They use TimeStamp API's (stat) and does not declare them. I cannot release my app until these are resolved as our release date is after May 1st. |
Maybe the warning is still delayed, but I was able to release a new build to TestFlight with 10.25.0 and I didn't get any warnings. Was there actually an issue on Firebase's side that was fixed with the move to 10.25.0? Will update in case the warning does come through. |
I submitted a build on April 30th (it was a patch to the live version that didn't have any privacy manifests at all) and got it approved and available on the AppStore, and didn't get any warning email. Paul mentioned here that Apple put some news up on the 26th April that suggests it will only affect new apps and apps that add dependencies on the list after the 1st of May, so it looks like existing apps with existing dependencies are not affected by this change in requirements. (but will be in some future announcement by Apple)
|
The issue was on App Store Connect's validation tooling-- it appeared to be ignoring SDK's privacy manifests for statically linked SDKs. In Firebase 10.25.0, some R.R. API were removed to lessen the surface area that exposed this problem. |
It seems like things are working as intended now, so I believe this has been addressed as of the May 1 deadline. I'm going to close this issue now. Please feel free to open a new issue if anything else comes up. |
Hi @ncooke3 |
@mirabo-trunghoang, I don't think there is an officially supported way to do this. Depending on Apple's enforcement tooling, it may impossible to do if your project builds dynamic frameworks (via use_frameworks!) because the frameworks need a privacy manifest attached to them. if you are using static frameworks (via use_frameworks! :linkage => :static), you could try finding xcprivacy files for the SDKs you use in the latest 10.25.0 release and use the information they contain to create your own privacy manifest at the root level of your app. This may be difficult as the SDK's constantly evolve and the latest privacy manifests may not accurately apply to an older SDK version. |
@ncooke3 one clarification if I may - if I update Firebase SDK to 10.25.0 I don't have to create PrivacyInfo.xcprivacy file myself? SDK 10.25.0 has it in needed places? |
Hi @IhorSkryl, correct, 10.25.0 does contain privacy manifests for all of the SDKs on Apple's list. Please see these docs (https://firebase.google.com/docs/ios/app-store-data-collection) for more info. |
Description
I updated to Firebase 10.22.1, but App Store Connect is still warning of APIs such as mach_absolute_time():
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: NSPrivacyAccessedAPICategorySystemBootTime. 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.
System boot time APIs
The following APIs for accessing the system boot time require reasons for use. Use the string NSPrivacyAccessedAPICategorySystemBootTime as the value for the NSPrivacyAccessedAPIType key in your NSPrivacyAccessedAPITypes dictionary.
systemUptime
mach_absolute_time()
In your NSPrivacyAccessedAPITypeReasons array, supply the relevant values from the list below.
35F9.1
Declare this reason to access the system boot time in order to measure the amount of time that has elapsed between events that occurred within the app or to perform calculations to enable timers.
Information accessed for this reason, or any derived information, may not be sent off-device. There is an exception for information about the amount of time that has elapsed between events that occurred within the app, which may be sent off-device.
Reproducing the issue
I'm using FirebaseAnalyticsWithoutAdIdSupport and FirebaseCrashlytics
Firebase SDK Version
10.22.1
Xcode Version
15.3
Installation Method
Swift Package Manager
Firebase Product(s)
Analytics, Crashlytics
Targeted Platforms
iOS
Relevant Log Output
No response
If using Swift Package Manager, the project's Package.resolved
Expand
Package.resolved
snippetIf using CocoaPods, the project's Podfile.lock
Expand
Podfile.lock
snippetReplace this line with the contents of your Podfile.lock!
The text was updated successfully, but these errors were encountered: