For key considerations when preparing your app for iOS privacy changes, see Privacy strategies for iOS.
Enable SKAdNetwork to track conversions
Prerequisites: Google Mobile Ads SDK 7.64.0 or higher
The Google Mobile Ads SDK supports conversion tracking using Apple's
SKAdNetwork
,
which lets Google and participating third-party buyers attribute an app install
even when the IDFA is not available.
To enable this capability, update the SKAdNetworkItems
key with an additional
dictionary that defines Google and participating third-party buyers'
SKAdNetworkIdentifier
values in your
Info.plist
.
The following example includes Google (cstr6suwn9.skadnetwork
) and select
additional buyer SKAdNetwork
identifiers that have been
provided to Google. Google is committed to updating this list to include
additional buyers and to working with the industry on solutions to share
SKAdNetworkIdentifier
values more broadly. This page contains the latest
updates.
<key>SKAdNetworkItems</key>
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cstr6suwn9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4fzdc2evr5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2fnua5tdw4.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ydx93a7ass.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>p78axxw29g.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v72qych5uu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ludvb6z3bs.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>cp8zw746q7.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3sh42y64q3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>c6k4g5qg8m.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>s39g8k73mm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qy4746246.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>hs6bdukanm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>mlmmfzh3r3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v4nxqhlyqp.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>wzmmz9fp6w.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>su67r6k2v3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>yclnxrl5pm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>7ug5zh24hu.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>gta9lk7p23.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>vutu7akeur.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>y5ghdn5j9k.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>v9wttpbfk9.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>n38lu8286q.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>47vhws6wlr.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>kbd757ywx3.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>9t245vhmpl.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>a2p9lx4jpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>22mmun2rn5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4468km3ulz.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>2u9pt9hc89.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8s468mfl3y.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>ppxm28t8ap.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>uw77j35x4d.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>pwa73g5rt2.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>578prtvx9j.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>4dzt52r2t5.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>tl55sbb4fm.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>e5fvkxwrpn.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>8c4e2ghe7u.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3rd42ekr43.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>3qcr597p9d.skadnetwork</string>
</dict>
</array>
Mediation
If you use mediation, check each ad
network partner's documentation
for any additional SKAdNetworkIdentifier
values they require.
For unlisted ad sources, reach out to your account team for their required
SKAdNetworkIdentifier
values.
Request App Tracking Transparency authorization
Prerequisites: Google Mobile Ads SDK 7.64.0 or higher
To display the App Tracking Transparency authorization request for accessing the
IDFA, update your Info.plist
to add the NSUserTrackingUsageDescription
key
with a custom message describing your usage. Here is an example description
text:
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
The usage description appears in the App Tracking Transparency dialog:
To present the authorization request, call
requestTrackingAuthorizationWithCompletionHandler:
.
We recommend waiting for the completion callback prior to loading ads so that if
the user grants the App Tracking Transparency permission, the Google Mobile Ads
SDK can use the IDFA in ad requests.
Swift
import AppTrackingTransparency
import AdSupport
...
func requestIDFA() {
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
// Tracking authorization completed. Start loading ads here.
// loadAd()
})
}
Objective-C
#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/AdSupport.h>
...
- (void)requestIDFA {
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// Tracking authorization completed. Start loading ads here.
// [self loadAd];
}];
}
For more information about the possible status values, see
ATTrackingManager.AuthorizationStatus
.
SKOverlay
Prerequisites: Google Mobile Ads SDK 8.5.0 or higher
SKOverlay presents a recommended app as an overlay on top of an ad, so users can install it without leaving your app.
If you use the Google Mobile Ads SDK 8.5.0 or higher, you don't need to take any action to enable SKOverlay for your app. When there is a positive performance benefit for users and advertisers, ads are automatically enhanced with SKOverlay.
App-Bound Domains
In June 2020, Apple introduced App-Bound
Domains as an opt-in feature for
developers to limit the domains for all WKWebView
in an app to 10 or fewer,
through the WKAppBoundDomains
Info.plist
key.
If you add the WKAppBoundDomains
key to your Info.plist
file, the Google
Mobile Ads SDK might fail to load ads.
Publisher first-party ID, formerly known as same app key
Prerequisites: Google Mobile Ads SDK 8.3.0 or higher
The Google Mobile Ads SDK introduced Publisher first-party ID, formerly known as same app key to help you deliver more relevant and personalized ads by using data collected from your apps.
Publisher first-party ID is enabled by default, but you can disable it using the following method.
Swift
@import GoogleMobileAds
// Disables Publisher first-party ID, formerly known as same app key.
GADMobileAds.sharedInstance().requestConfiguration.setPublisherFirstPartyIDEnabled(false)
Objective-C
@import GoogleMobileAds;
// Disables Publisher first-party ID, formerly known as same app key.
[GADMobileAds.sharedInstance.requestConfiguration setPublisherFirstPartyIDEnabled:NO];