firebase-ios-sdk: Rejection from Apple review team because of Your app implements the App Tracking Transparency framework
[REQUIRED] Step 1: Describe your environment
- Xcode version: Version 12.4 (12D4e)
- Firebase SDK version: 7.8.1
- Installation method:
Zip file - Firebase Component: Analytics (probably)
[REQUIRED] Step 2: Describe the problem
Hello. We are working on educational app for kids. We use C++ based application on iOS, firebase-ios-sdk is the only third-party-library we use. Apple review team reject our application because of Your app implements the App Tracking Transparency framework. There is no adSupport or iAd frameworks linked. We completely disable analytics by adding <key>FIREBASE_ANALYTICS_COLLECTION_ENABLED</key><false/> to the Info.plist. We are going out of ideas. Please help.
There is message from apple review team:
We noticed that your Kids Category app includes analytics, advertising and collects, transmits, or has the ability to share personal information or device information with third parties. Specifically:
- Your app implements the App Tracking Transparency framework, which is used when apps collect data about users and share it with third-parties for tracking purposes. Since Kids Category apps are not allowed to collect, transmit or share identifiable information with third-parties, you should not implement App Tracking Transparency in your app.
There is list of frameworks we are using:
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 1
- Comments: 51 (16 by maintainers)
I can confirm that an update to one of my kids category apps was facing this rejection.
I switched to using
7.9.0-k2and resubmitted. I was approved within a few hours.🚀
Will Firebase please create their own test app that uses FirebaseAnalytics.framework and GoogleAppMeasurement.framework and submit it to the app store as a kids category app so that they can communicate directly with Apple about the issue instead of us being the middle people? Firebase can chose a manual submission so it doesn’t actually end up on the app store when Apple approves it. Especially when we don’t have visibility into the Firebase code, we’re just submitting blind and the process is slowed by us relaying the message from Apple to Firebase.
Hi everyone, apologies for the delay. We’ve put together a short-term fix to unblock app submissions and are working hard on a longer-term solution for all package managers. The following one-off build is based on the 7.9.0 release but has excluded the APIs flagged by App Review.
CocoaPods
In your
Podfile, update the version specifier onFirebase/Analyticsand any otherFirebase/*pod to7.9.0-k2.Then, run
pod updateand check yourPodfile.lockto ensure the-k2suffix exists on theFirebaseAnalyticsandGoogleAppMeasurementPods.Zip Integration
Please download the following
tar.gzfiles and replace the.xcframeworks in your project:Note:
k1here andk2in CocoaPods are identical.Swift Package Manager
If you’re using Swift Package Manager, using the above
tar.gzdownloads and replacing them in your.builddirectory may be sufficient, but if you have issues please let us know.Further Updates
If you pass App Review using this new artifact, can you please add a rocket emoji reaction (🚀) to this post letting us know you were successful and are now unblocked? If this doesn’t work for you, please reply to this thread with the rejection notice if possible and we’ll respond ASAP.
Apologies once again, we’ll update this thread with further instructions when the longer-term solution is in place. Thank you.
We’re sorry you’re seeing rejections. Google Analytics for Firebase has provided AddSupport as an optional feature for a long time, and introduced optional support for AppTrackingTransparency last year. Our approach has been to use NSClassFromString and NSSelector to detect the presence of these frameworks - this approach is now resulting in App Store rejections. Our team is working on decoupling this detection and providing more transparency on the product behavior.
We are also getting rejections for App Tracking Transparency framework violations. From quick scan of the
GoogleAppMeasurementframework, it looks like the binary still contains runtime loading of the ATTrackingManager class and API calls, but obfuscated and loaded withNSClassFromStringandNSSelectorFromString.Some transparency from Firebase would be appreciated here about what changes are being made, as it is getting a bit embarrassing submitting new builds without knowing what has changed. (Is this new version just more of the same obfuscation etc?)
The way forward here would be to open source the parts of the frameworks that contain the violating code, and allow us as users to add #defines in the Cocoapod compile step to exclude the parts, just like other Analytics frameworks have been doing for a long time to exclude any code relating to
ASIdentifierManagerfor example.We’re also a kids app being rejected with 7.8.1. Apple told us “the ATTrackingManager and trackingAuthorizationStatus dynamic usage remains in place via concatenation in block code associated with -[APMIdentity updateIdentifiers].”
Could you help us resolve this issue ASAP? Thanks
Is it possible to release a
strictversion of the framework? Like Appsflyer does. Without any tracking or suspicious things. Just to keep the kids happy?I would assume they are objecting to the fact that the ATTrackingManager references are still in the binaries, just split into multiple strings.
I can confirm that submitting without
FirebaseAnalytics.frameworkandGoogleAppMeasurement.frameworkdoes pass review, but is not very helpful in other ways than narrowing down the location of the problem, since we do actually use Firebase Analytics…Thanks, firebase team! After we updated the firebase SDK to 7.9.0-k2, My app was approved by Apple.
I can also confirm that submitting without
FirebaseAnalytics.frameworkandGoogleAppMeasurement.frameworkdoes pass the review.Thank you for the update. We got our child’s app approved yesterday using this SDK version on Cordova.
Thank you so much ❤️ I’ll update you once the app is approved.
So far the fix is only in 7.9.0-k2. We’re working on a longer term solution that will part of regular releases, but it will likely take a few more releases. Until then, we recommend that Kids apps stay on 7.9.0-k2.
Hi @jfinkelstein-ixl Firebase, FirebaseAnalytics, and GoogleAppMeasurement should all be the
-k2version.After adding the following to the Analytics Quickstart Podfile:
I see
In the meantime, we’re doing additional tests on our end to try to isolate any remaining issues.
@paulb777 If RNFB users set a variable in their Podfile that we look for in our RNFBAnalytics.podspec, we include the new subspec you all publish with no ad ids, otherwise they get the original Firebase/Analytics dependency
I put guards in requiring 7.11.0 min and also verify in RNFBAdMob that they did not set the variable as that would make no sense.
Examination of Podfile.lock with and without the variable shows expected results (Analytics and AppMeasurement either with or without ad ids, depending)
So I think it’s all set, at long last! Quite the odyssey on this one.
Thank you! We got approved with the archive release.
There are some reports: https://github.com/firebase/quickstart-unity/issues/994#issuecomment-800924057 and https://github.com/firebase/quickstart-unity/issues/989#issuecomment-800919375. It is about Unity-based package, but I guess it is built on the top of the firebase-is-sdk 7.8.1
Last time I’ve tried to remove analytics and/or GoogleAppMeasurement I’ve ended up with no luck. Looks like other frameworks depend on problematic ones, and I need to disable them (FirebaseABTesting, FirebaseCrashlytics, FirebaseDynamicLinks, etc.)
I will try again and report the results.