Skip to content
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

FR: Can NSUserTrackingUsageDescription be removed for GoogleAppMeasurement in FirebaseAnalytics. #7652

Closed
umtblbl opened this issue Mar 4, 2021 · 13 comments

Comments

@umtblbl
Copy link

umtblbl commented Mar 4, 2021

Feature proposal

Ability to optionally remove the NSUserTrackingUsageDescription and IDFA usage request for GoogleAppMeasurement within FirebaseAnalytics, thereby increasing compliance with Apple guidelines for child category applications.

  • Firebase Component: Google Analytics for Firebase

Hi, we are using the "7.7.0" version of FirebaseAnalytics with CocoaPods for our iOS application. As follows;

pod 'Firebase / Analytics', '~> 7.7.0'

Since we are developing applications for children, we received the following reject message in our latest application update for the App Store.

  • 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.

We do not use AppTrackingTransparency in our project, but we made the following query in the Project file to determine which library uses it;

grep -r NSUserTrackingUsageDescription .

We noticed that the findings could be within GoogleAppMeasurement as follows;

Binary file ./Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAppMeasurement.framework/GoogleAppMeasurement matches
Binary file ./Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.xcframework/ios-arm64_armv7/GoogleAppMeasurement.framework/GoogleAppMeasurement matches

We have not made a separate addition for GoogleAppMeasurement within the pod. It is included in the project from within FirebaseAnalytics as follows.

FirebaseAnalytics (7.7.0):
    - FirebaseCore (~> 7.0)
    - FirebaseInstallations (~> 7.0)
    - GoogleAppMeasurement (= 7.7.0)
    - GoogleUtilities / AppDelegateSwizzler (~> 7.0)
    - GoogleUtilities / MethodSwizzler (~> 7.0)
    - GoogleUtilities / Network (~> 7.0)
    - "GoogleUtilities / NSData + zlib (~> 7.0)"

Do you have any solution suggestions for this situation? For example, is there a version of FirebaseAnalytics not included in GoogleAppMeasurement? Or can we remove the use of AppTrackingTransparency for GoogleAppMeasurement or add a feature like this?

@google-oss-bot
Copy link

I found a few problems with this issue:

  • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
  • This issue does not seem to follow the issue template. Make sure you provide all the required information.
@umtblbl umtblbl changed the title Can NSUserTrackingUsageDescription be removed for GoogleAppMeasurement in FirebaseAnalytics. Mar 4, 2021
@KazukiTanaka
Copy link

We are developing an app for kids.
We was also rejected with the same message.

@sc0rch
Copy link

sc0rch commented Mar 4, 2021

We has the same problem, please address.

@ryanwilson
Copy link
Member

ryanwilson commented Mar 4, 2021

Hey folks - thanks for the reports. This is top of mind for us and we'll update this thread today with more details. Sorry for trouble caused.

@AlexNay-iOS
Copy link

We've faced the same problem... Look forward for solution

@mobilepm
Copy link

mobilepm commented Mar 8, 2021

We were also rejected from the app store because we are a kids app using Firebase Analytics (even with IDFA, IDFV, and personalized advertising disabled following https://firebase.google.com/docs/analytics/configure-data-collection?platform=ios#disable_idfa_collection). Apple said they detected NSUserTrackingUsageDescription present in -[APMIdentity retrieveAdTrackingConsentStatus].

We will have to remove Firebase if this is not resolved.

@morganchen12
Copy link
Contributor

@ryanwilson reminder to update this thread--looks like the fix is going out in M91, which is our next release and should be out soon.

@jkb0o
Copy link

jkb0o commented Mar 9, 2021

we are facing the same issue. got rejected five times with different configurations. Are there any workarounds? Maybe a way to compile ios framework without GoogleAppMeasurement?

@paulb777
Copy link
Member

paulb777 commented Mar 9, 2021

Firebase 7.8.0 has now published to CocoaPods and should fix this issue.

@paulb777 paulb777 closed this as completed Mar 9, 2021
@paulb777
Copy link
Member

paulb777 commented Mar 9, 2021

Note this fix won't be available in the Carthage distribution because of its xcframework limitations. The workaround is to use the zip distribution.

@jbweimar
Copy link

I just resubmitted an app with version 7.8.0 and I'm still getting flagged:

"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."

When asking for clarification from Apple on the previous (similar) rejection they added:

"Regarding Guideline 1.3 - Safety - Kids Category, we noticed that your Kids Category app includes the specific class -[APMIdentity retrieveAdTrackingConsentStatus]."

I opened my binary in Hopper and indeed found no reference to retrieveAdTrackingConsentStatus. Maybe they're flagging on other methods, too?

@jbweimar
Copy link

Hey @paulb777,

I just got a response from Apple and they said the following:

"At this time, the concern regarding App Transparency code use is associated with -[APMIdentity updateIdentifiers], wherein the ATTrackingManager class is accessed dynamically, and here and elsewhere within that SDK are methods for that class also accessed dynamically. It would be appropriate to remove the SDK, update or otherwise revise it to only use the App Transparency APIs if intended for use, and without any obfuscation of the use if maintained."

We are only using analytics and no other parts of the Firebase SDK. Is there anything I can still do to prevent this from being flagged?

Thanks!

@paulb777
Copy link
Member

Some more recent updates at #7736

@firebase firebase locked and limited conversation to collaborators Apr 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.