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:advertisingIdentifierString reason for apple rejection. #5153

Closed
UberMC opened this issue Mar 19, 2020 · 21 comments
Closed

FR:advertisingIdentifierString reason for apple rejection. #5153

UberMC opened this issue Mar 19, 2020 · 21 comments

Comments

@UberMC
Copy link

UberMC commented Mar 19, 2020

[READ] Guidelines

When filing a feature request please make sure the issue title starts with "FR:".

Feature proposal

  • Firebase Component: Analytics? (Auth, Core, Database, Firestore, Messaging, Storage, etc)

Describe your use case and/or feature request here.

Apple:
As we discussed, we continue to find that your Kids app includes third-party analytics with the ability to collect and transmit IDFA. Specifically, in the "APMIdentity class", there is a selector "advertisingIdentifierString"

So I create an breakpoint
and it results in APMASIdentifierManager not APMIdentity as apple says.
-[APMASIdentifierManager advertisingIdentifierString]

I see it gets disabled when I modify info.plist
FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED

GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS

However I also see there is absolutely no stack trace to what calls the thread with APMASIdentifierManager, so something? I'm guessing an unmodifiable library calls it. and apple is telling us it's impossible to disable.

So is apple right, are my efforts to try and keep Firebase analytics in the app impossible with:
IDFA disabled
In a way apple trusts it's disabled.

@google-oss-bot
Copy link

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

@UberMC UberMC changed the title advertisingIdentifierString reason for apple rejection. FR:advertisingIdentifierString reason for apple rejection. Mar 19, 2020
@paulb777
Copy link
Member

Thanks for sharing the details from the Apple rejection. We'll investigate.

@lopsae
Copy link

lopsae commented Mar 20, 2020

Current version of Firebase/Analytics (6.20.0) uses GoogleAppMeasurement which in turns shows up when searching for ASIdentifierManager:

# from xcode project directory
> grep -r ASIdentifierManager .
Binary file ./Pods/GoogleAppMeasurement/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement matches

We are getting rejections from the Apple App Store for a similar issue. Our kids app is being flagged as possibly using IDFA. Communicating with Apple directly they have stated that they want the app to contain absolutely no IDFA code, regardless of if it is called or not.

Seems like GoogleAppMeasurement is the only place where that is still being found, and we have found no way to use Firebase without including it too. Unless Apple changes their position we cannot ship with Firebase/Analytics in our code.

@wilhuff
Copy link
Contributor

wilhuff commented Mar 20, 2020

Can you post your Podfile.lock?

@morganchen12
Copy link
Contributor

Filed b/152062046 internally.

@lopsae
Copy link

lopsae commented Mar 20, 2020

This is my Podfile.lock when only using Firebase/Analytics:

PODS:
  - Firebase/Analytics (6.20.0):
    - Firebase/Core
  - Firebase/Core (6.20.0):
    - Firebase/CoreOnly
    - FirebaseAnalytics (= 6.3.1)
  - Firebase/CoreOnly (6.20.0):
    - FirebaseCore (= 6.6.4)
  - FirebaseAnalytics (6.3.1):
    - FirebaseCore (~> 6.6)
    - FirebaseInstallations (~> 1.1)
    - GoogleAppMeasurement (= 6.3.1)
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (= 0.3.9011)
  - FirebaseCore (6.6.4):
    - FirebaseCoreDiagnostics (~> 1.2)
    - FirebaseCoreDiagnosticsInterop (~> 1.2)
    - GoogleUtilities/Environment (~> 6.5)
    - GoogleUtilities/Logger (~> 6.5)
  - FirebaseCoreDiagnostics (1.2.2):
    - FirebaseCoreDiagnosticsInterop (~> 1.2)
    - GoogleDataTransportCCTSupport (~> 2.0)
    - GoogleUtilities/Environment (~> 6.5)
    - GoogleUtilities/Logger (~> 6.5)
    - nanopb (~> 0.3.901)
  - FirebaseCoreDiagnosticsInterop (1.2.0)
  - FirebaseInstallations (1.1.0):
    - FirebaseCore (~> 6.6)
    - GoogleUtilities/UserDefaults (~> 6.5)
    - PromisesObjC (~> 1.2)
  - GoogleAppMeasurement (6.3.1):
    - GoogleUtilities/AppDelegateSwizzler (~> 6.0)
    - GoogleUtilities/MethodSwizzler (~> 6.0)
    - GoogleUtilities/Network (~> 6.0)
    - "GoogleUtilities/NSData+zlib (~> 6.0)"
    - nanopb (= 0.3.9011)
  - GoogleDataTransport (5.0.0)
  - GoogleDataTransportCCTSupport (2.0.0):
    - GoogleDataTransport (~> 5.0)
    - nanopb (~> 0.3.901)
  - GoogleUtilities/AppDelegateSwizzler (6.5.2):
    - GoogleUtilities/Environment
    - GoogleUtilities/Logger
    - GoogleUtilities/Network
  - GoogleUtilities/Environment (6.5.2)
  - GoogleUtilities/Logger (6.5.2):
    - GoogleUtilities/Environment
  - GoogleUtilities/MethodSwizzler (6.5.2):
    - GoogleUtilities/Logger
  - GoogleUtilities/Network (6.5.2):
    - GoogleUtilities/Logger
    - "GoogleUtilities/NSData+zlib"
    - GoogleUtilities/Reachability
  - "GoogleUtilities/NSData+zlib (6.5.2)"
  - GoogleUtilities/Reachability (6.5.2):
    - GoogleUtilities/Logger
  - GoogleUtilities/UserDefaults (6.5.2):
    - GoogleUtilities/Logger
  - nanopb (0.3.9011):
    - nanopb/decode (= 0.3.9011)
    - nanopb/encode (= 0.3.9011)
  - nanopb/decode (0.3.9011)
  - nanopb/encode (0.3.9011)
  - PromisesObjC (1.2.8)

DEPENDENCIES:
  - Firebase/Analytics

SPEC REPOS:
  https://github.com/cocoapods/specs.git:
    - Firebase
    - FirebaseAnalytics
    - FirebaseCore
    - FirebaseCoreDiagnostics
    - FirebaseCoreDiagnosticsInterop
    - FirebaseInstallations
    - GoogleAppMeasurement
    - GoogleDataTransport
    - GoogleDataTransportCCTSupport
    - GoogleUtilities
    - nanopb
    - PromisesObjC

SPEC CHECKSUMS:
  Firebase: fe7f74012742ab403451dd283e6909b8f1fb348a
  FirebaseAnalytics: 572e467f3d977825266e8ccd52674aa3e6f47eac
  FirebaseCore: ed0a24c758a57c2b88c5efa8e6a8195e868af589
  FirebaseCoreDiagnostics: e9b4cd8ba60dee0f2d13347332e4b7898cca5b61
  FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
  FirebaseInstallations: 575cd32f2aec0feeb0e44f5d0110a09e5e60b47b
  GoogleAppMeasurement: c29d405ff76e18551b5d158eaba6753fda8c7542
  GoogleDataTransport: a857c6a002d201b524dd4bc2ed7e7355ed07e785
  GoogleDataTransportCCTSupport: 32f75fbe904c82772fcbb6b6bd4525bfb6f2a862
  GoogleUtilities: ad0f3b691c67909d03a3327cc205222ab8f42e0e
  nanopb: 18003b5e52dab79db540fe93fe9579f399bd1ccd
  PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6

PODFILE CHECKSUM: 53bd9c0a8c62c5aac2288b6566531d68bece65ac

COCOAPODS: 1.5.3

@eburley
Copy link

eburley commented Mar 21, 2020

Would you mind emailing me at [email protected]? I'd like to follow up on a few details.

@mjlee250
Copy link

I am having the same issue? Did you find a workaround?

@nishitsplashmath
Copy link

Same issue.. Our app got rejected because of the same. Also on removing firebase/analytics didn't removed the app measurement.

@paulb777
Copy link
Member

GoogleAppMeasurement is also a dependency of Google-Mobile-Ads-SDK.

@frantxesco
Copy link

Would you mind emailing me at [email protected]? I'd like to follow up on a few details.

Please let us know if you come up with any solution. Thanks.

@geekydiamond
Copy link

geekydiamond commented Apr 14, 2020

Our app was also rejected for 'made for kids' category. Just waiting on details from Apple, but could be that this is due to the same issue as we use Firebase for databases. We also use another library that pops up on a grep of advertisingIdentifier though.

Any solutions/hacks very gratefully received.

@paulb777
Copy link
Member

@geekydiamond We don't know of any rejections due to Firebase databases - only FirebaseAnalytics.

@geekydiamond
Copy link

But Firebase/Core (which databases needs) brings in FirebaseAnalytics as a dependency doesn't it? Apologies if this is not the case, but I looked at the Pod dependencies and this seems to be true.

@paulb777
Copy link
Member

Firebase/Core is not a dependency and no longer recommended to be added to Podfiles. Instead, add the pods your app needs to the Podfile and those pods will make sure they have the right dependencies.

@eburley
Copy link

eburley commented Apr 28, 2020

We're looking at a fix that makes it clearer that the FirebaseAnalytics pod only uses AdSupport framework if it's linked.

For commentors on the issue who have experienced app store rejection, could you please email me at [email protected]. I'd like to get some more details on your specific rejections.

@pstdivinemercy
Copy link

Our app was also rejected for 'made for kid' category.
Apple said "there is still Third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA."

We are using flutter to build our iOS App. And we are using these flutter plugins:
"firebase_core",
"firebase_auth",
"google_sign_in"

So our dependencies are not added from the iOS pod file but from flutter (pubspec.yaml).

1-What is the solution in this case as we don't have the "firebase/CoreOnly" from flutter?
2-Is there any solution around this?

@gmilano
Copy link

gmilano commented Jun 13, 2020

Hi guys this is being a big issue for using Firebase SDK on really important projects. At least in our case we removed the use of Firebase because Apple was rejecting our application because the reference to advertisingIdentifier.
We followed https://firebase.google.com/docs/analytics/configure-data-collection?platform=ios&hl=en#disable_idfa_collection but still Apple see the reference (I think through static analysis)

This was a big issue for our app that was integrating Exposure Notifications for our country. We still are having this problem and at this moment the solution was to remove Firebase SDK in this first release.

We think the problem is with the reference (https://github.com/CocoaPods/Specs/blob/master/Specs/e/3/b/GoogleAppMeasurement/6.6.0/GoogleAppMeasurement.podspec.json)

Hope we can have a special version of Firebase SDK without this code .

@frantxesco
Copy link

We're looking at a fix that makes it clearer that the FirebaseAnalytics pod only uses AdSupport framework if it's linked.

For commentors on the issue who have experienced app store rejection, could you please email me at [email protected]. I'd like to get some more details on your specific rejections.

Hi there, this is going to be a huge issue as starting July 1st Apple will reject all apps in the "made for kids" category that reference AdSupport even if they do not use it.

Did you find any solution?

@eburley
Copy link

eburley commented Jun 29, 2020

FirebaseAnalytics only collects IDFA if the AdSupport framework is linked (source)

The class and methods used to conditionally access IDFA had names that overlapped with AdSupport's class and method names, which caused App Store reviewers to misclassify applications. The next version of FirebaseAnalytics uses different class and method names, which should solve this issue.

@morganchen12 morganchen12 added this to the 6.27.1 - M74 milestone Jun 29, 2020
@ryanwilson
Copy link
Member

The new version of FirebaseAnalytics that uses different class and method names has been released. Thank you for your patience and please re-open this issue if this doesn't resolve the issue at hand.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests