I wonder if it is possible to use Google Analytics for iOS in a anonymized way.
It is currently possible to :
- disable IDFA (https://developers.google.com/analytics/devguides/collection/ios/v3/optional-features)
- anonymize IP (https://developers.google.com/analytics/devguides/collection/ios/v3/advanced)
But is there any other identifier that Google Analytics may use ?
for exemple, does Google Analytics use the IDFV ? (https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor)
You can find everything here: https://support.google.com/firebase/answer/9019185?hl=en
Site and/or app owners using Google Analytics and Google Analytics for Firebase (aka “customers”) may find this a useful resource, particularly if they are businesses affected by the European Economic Area’s General Data Protection Regulation (GDPR), or California's California Consumer Privacy Act (CCPA), or other similar regulations.
Disabling IDFV and Personalized Ads
Disabling IDFA is possible. There are two ways, programmatically, and through Google Analytics "admin panel". Additionally, you should probably setup your Firebase accordingly, and configure all GADRequests. I explain all of them below.
Programmatically disabling IDFA
To programmatically control whether a user's Analytics data should be
used for personalized advertising, set the appropriate default
behavior in the app's AndroidManifest.xml file, and then use the
methods described below to override that default behavior.
To set the default personalized advertising behavior, set the value of
GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS to NO
(Boolean) in your app's Info.plist file.
Disabling IDFA via settings
You can also control whether data collected from end users may be used
for ads personalization via the ads personalization setting, found in
Google Analytics’ Property settings.
Here is a screenshot of this setting in Google Analytics "Admin Panel":
Go to your Google Analytics dashboard, select the Product, then follow these steps:
Disabling during Firebase setup
Additionally, make sure you use AnalyticsWithoutAdIdSupport when you add Firebase to your app. See the documentation here.
If you installed Firebase through CocoaPods by adding pod
'Firebase/Analytics' to your app's Podfile and wish to disable
collection of the IDFA (a device's advertising identifier) in your
Apple app, ensure that the AdSupport framework is not included in your
app. To install Firebase without any IDFA collection capability, use
the following subspec in place of pod
'Firebase/Analytics': pod ‘Firebase/AnalyticsWithoutAdIdSupport'
Serving Non-Personalized Ads via GADRequest
Additionally, you can configure GADRequest objects to specify that only non-personalized ads should be requested, as explained in the documentation.
The following code causes non-personalized ads to be requested regardless of whether or not the user is in the EEA:
let request = GADRequest()
let extras = GADExtras()
extras.additionalParameters = ["npa": "1"]
request.register(extras)
Disabling IDFV Collection
You can also disable IDFV (Identifier for Vendor) collection.
If you wish to disable collection of the IDFV (Identifier for Vendor)
in your Apple app, set the value
of GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED to NO (Boolean) in your
app's Info.plist file.
IP Anonymization
IP Anonymization is no longer necessary according to Google Analytics 4 documentation:
“In Google Analytics 4, IP anonymization is not necessary since IP
addresses are not logged or stored.”
Disclaimer: I only write this answer to help others. This is not a legal advice, and information in this answer may not be complete, up-to-date, and/or correct.
Related
If you're using Firebase analytics in your iOS Firebase project, starting in iOS 14.5 do you need to present a prompt asking User for app Tracking permission? From Firebase docs they say that Impact if IDFA is not accessible for Google Analytics:
Analytics event logging, event reporting, and conversion measurement are unaffected, but attribution is impacted if IDFA is not accessible. To learn more about Google’s response to iOS 14, see our blog post.
After reading the blog post its still not clear to me if I need to present the prompt or not?
If you want to track conversions in firebase or google analytics supporting of IDFA is required.
For CocoaPods you use two types of pod:
Either
pod 'Firebase/Analytics'
or
pod 'Firebase/AnalyticsWithoutAdIdSupport'
The last pod doesn't use IDFA and you shouldn't use ATTrackingManager request to user otherwise should.
If you use FirebaseAnalytics only to track user activity (custom and system events) use AnalyticsWithoutAdIdSupport and don't show ATTrackingManager prompt.
Firebase Analytics does not track the user's personal information, most of the information is metadata about the app itself and its usage time. The key difference is you cannot target a specific user and track them as an individual, rather find in general how often users fullfill a specific task.
For iOS apps, the app must collect IDFA in order to automatically derive the Age, Gender, and Interests properties.
Google Analytics guide
I have added pod ‘GoogleIDFASupport’ but unable to set the tracker as there is no tracking ID on Google Analytics -> Admin for a App+Web property.
// Assumes a tracker has already been initialized with a property ID, otherwise
// getDefaultTracker returns nil.
let tracker = GAI.sharedInstance().tracker(withTrackingId: "NO_TRACKING_ID")
// Enable IDFA collection.
tracker!.allowIDFACollection = true
I just see the property number on the property panel.
Please advise
Reference
Source - Firebase Support -
Please note that Firebase and Google Analytics are two separate platforms. In regards to the GA Mobile SDK, please note that we have now fully sunset the SDK. You can read more about this topic here.
As for Firebase, for IDFA to be available in iOS, you just need to link in the following libraries:
libAdIdAccess.a
AdSupport.framework
Other steps mentioned here are for GA Mobile SDK.
I would like to find out in my iOS app if the app was installed due to an ad campaign link.
Google Analytics is doing this and it is tracked on their analytics web page. iTunes Connect is doing this too and it is also tracked on the iTC web page.
I'm looking now for a way to get this information inside the app. When the app first starts i want to check if it was installed because the user was sent to the App Store by a campaign link and what campaign id it was.
Is there a way for an iOS app to ask Google Analytics, Firebase or iTC/StoreKit what campaign has led to its install?
Google Anlaytics uses IDFA of user's device as identifer after user installs the application, i.e. when user clicks on the ad, they are redirected to google analytics where they collect user's IDFA and redirects user to iTunes. Once user installs the application, they match the saved IDFA with user's IDFA and if they match they mark that user as attributed.
I looked at the Google Analytics docs, to find some info on callback that google may provide if there is a match, after user installs the application. Unfortunately, I could not find anything.
But the thing is, I don't think this method should work at all now after iOS 10. Apple provided users with Limit Ad Tracking from sometime now but on iOS 10, if a user has enabled it, the IDFA API returns a number like this: 00000000-0000-0000-0000-000000000000
You can imagine you cannot match user using IDFA now.
On the other hand, there are other ways to do fingerprint matching for iOS devices. It is not very accurate but it works most of the time.
I have used branch.io for deferred deeplinking and it worked. You can also look at the solution provided by them. They have a callback which you can implement and get to know from which link your app is getting installed.
It looks like Adjust can do this:
Adjust says it uses fingerprinting when IDFA is not available
https://docs.adjust.com/en/getting-started/#tracking-installs
According to https://docs.adjust.com/en/callbacks/#best-practice-accessing-adjust-attribution-data-externally
and
https://partners.adjust.com/placeholders/
the Adjust SDK seems to allow the app access to its data including campaign name for installs.
I will comment later if this really worked.
I got an answer from Adjust saying:
yes it is possible with the Adjust SDK to attribute installs to the
source which drove that install.
By setting up campaign parameter structure to the tracker URL, you can
actually find out the the Network Name, Campaign Name, Adgroup Name
and Creative Name.
For your reference here is the guide to setup campaign parameter
structures ->
https://docs.adjust.com/en/tracker-generation/#planning-your-tracker-structure
I'm trying to clean up a pod installation on a current project that has been using Firebase analytics for the last year or so. I have noticed that it has collected user data such as age and gender, from what I understand this is done like so:
The iOS Identifier for Advertisers (IDFA). Applies to app activity only. When you use the Firebase Analytics tracking code in an iOS app to collect the IDFA, Firebase Analytics generates an identifier based on the IDFA that includes demographic and interest information associated with users’ app activity
However does this require the GoogleIDFASupport pod to work? I was using this previously for Google Analytics and would like to remove it if it's not used by Firebase. Any pointers on this would be really appreciated. Thanks!
The IDFA is used in Firebase analytics SDK when users allow ad tracking automatically. Besides Firebase Analytics' dependencies like FirebaseCore, FA doesn't need GoogleIDFASupport.
I guess you need GoogleIDFASupport only if you use it in your reports.
I have been Googling this to try and confirm - My understanding is Apple now reject apps using IDFA without actually serving Adverts. For the demographics feature of Google analytics the documentation says that IDFA collection must be enabled.
There are lots of articles around how the latest version of the Google analytics IOS SDK no longer requires the collection of IDFA by default.
To gather demographic data though - can someone please confirm if you still need to enable this option? Is it no longer possible to collect demographic data without serving ads using Google analytics?
Thanks heaps
I am using IDFA exclusively for getting demographic info for Google Analytics.
I chose the option:
"Attribute this app installation to a previously served advertisement".
And my app was approved. Cheers! :-D
When submitting the app, specify that you are using it to attribute campaigns served outside of the app. Works for us for over a year.