<br />

For key considerations when preparing your app for iOS privacy changes, see

[Privacy strategies for iOS](https://support.google.com/admanager/answer/9997589).


## 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`](https://developer.apple.com/documentation/storekit/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`](https://developer.apple.com/documentation/storekit/skadnetwork/configuring_a_source_app).

The following example includes Google (`cstr6suwn9.skadnetwork`) and select
additional [buyer SKAdNetwork
identifiers](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/3p-skadnetworks) 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.

```xml
<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>wg4vff78zm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qy4746246.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f38h382jlk.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>t38b2kh725.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>44jx6755aq.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>k674qkevps.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>klf5c3l5u5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ppxm28t8ap.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbmxgpxpgc.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>uw77j35x4d.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>c3frkrj4fj.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>97r2b46745.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
  </dict>
</array>
```

### Mediation

If you use [mediation](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/mediation.md.txt), check each [ad
network partner's documentation](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/choose-networks#network_details)
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**

> [!IMPORTANT]
> **Key Point:** If you decide to include App Tracking Transparency (ATT) in your app, you can use the User Messaging Platform (UMP) SDK to [trigger an IDFA
> explainer](https://developers.google.com/ad-manager/mobile-ads-sdk/ios/privacy/idfa) that gives users some context of why you're asking for this permission. Be aware that the usage of the UMP SDK affects all users of your app.
>
>
> If you aren't using the UMP SDK, the rest of this section shows you how to
> implement the OS-level ATT authorization request manually.

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:

```xml
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
```

![](https://developers.google.com/static/admob/images/idfa/editor.png)

The usage description appears in the App Tracking Transparency dialog:

![](https://developers.google.com/static/admob/images/idfa/att-iOS.png)

To present the authorization request, call
[`requestTrackingAuthorizationWithCompletionHandler:`](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/3547037-requesttrackingauthorization).
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

```swift
@available(iOS 14, *)
private func requestIDFA() {
  ATTrackingManager.requestTrackingAuthorization { status in
    // Tracking authorization completed. Start loading ads here.
  }
}
```

### Objective-C

```objective-c
- (void)requestIDFA {
  if (@available(iOS 14, *)) {
    [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(
                           ATTrackingManagerAuthorizationStatus status){
        // Tracking authorization completed. Start loading ads here.
    }];
  }
}
```

For more information about the possible status values, see
[`ATTrackingManager.AuthorizationStatus`](https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager/authorizationstatus).

> [!TIP]
> **Tip:** For a better user experience, we recommend adding an explainer preceding the call to `requestTrackingAuthorizationWithCompletionHandler:` to clarify the permission and data usage to users.

## SKOverlay

**Prerequisites: Google Mobile Ads SDK 8.5.0 or higher**

[SKOverlay](https://developer.apple.com/documentation/storekit/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 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](https://webkit.org/blog/10882/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,
Google Mobile Ads SDK might fail to load ads.


## Publisher first-party ID

**Prerequisites:
Google Mobile Ads SDK
10.14.0 or
higher**

The
Google Mobile Ads SDK
introduced
[Publisher first-party ID](https://support.google.com/admanager/answer/9997589#publisher-first-party-id),
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

```swift
// Disables Publisher first-party ID.
MobileAds.shared.requestConfiguration.setPublisherFirstPartyIDEnabled(false)
```

### Objective-C

```objective-c
// Disables Publisher first-party ID.
[GADMobileAds.sharedInstance.requestConfiguration setPublisherFirstPartyIDEnabled:NO];
```