# Google CMP

### Requirements <a href="#requirements" id="requirements"></a>

* Obtain a Google app ID by following the [Google Funding Choices Help Center instructions](https://support.google.com/admob/answer/7356431).
* Set the Google appID in the Info.plist file:

```
<key>GADApplicationIdentifier</key>
<string>YOUR-APP-ID</string>
```

* Integrate GoogleCMP:
  * Cocoapods:
    * Add `pod 'AATKit/GoogleCMP'` to your Podfile.
  * Swift Package Manager:

    * Follow the same SPM steps [here](https://aatkit.gitbook.io/ios-integration/start/setup/swift-package-manager).
    * Repeat the last step, and add `AATKit-GoogleCMP`.

    <figure><img src="https://3006681101-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC07HayBzqyav5R2yFhOr%2Fuploads%2F1YnuE50EUa1MLQNZTXA9%2FScreenshot%202025-04-17%20at%2011.34.04%E2%80%AFAM.png?alt=media&#x26;token=534b2837-e4c0-45dc-9ad4-81020b389b0b" alt=""><figcaption></figcaption></figure>

Make sure, your Google CMP has been set up at its backend dashboard. Our support recommends certain vendors to be included in your server-side setup in order to yield optimal revenues. We also recommend that CMP should be geographically targeted to "Everywhere", for handling of opt-out consent scenarios. Please also refer to your [Google CMP’s documentation](https://developers.google.com/admob/ump/ios/quick-start).

### Usage

Follow the instructions in the Managed Consent [introduction section](https://aatkit.gitbook.io/ios-integration/start/consent/managed-consent).

* Create an instance of `AATCMPGoogle` (`AATCMPGoogle` conforms to `AATCMPProtocol`).
* Pass the created `AATCMPGoogle` instance while initializing the AATManagedConsent using the `public init?(cmp: AATCMPProtocol?, delegate: AATManagedConsentDelegate)` method.

{% tabs %}
{% tab title="Swift" %}

```swift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    ...
    func configureAATKit() {
        let configuration = AATConfiguration()
        configuration.delegate = self
        let cmp = AATCMPGoogle()
        var consent = AATManagedConsent(cmp: cmp, delegate: self)
        configuration.consent = consent
        AATSDK.initAATKit(with: configuration)
        consent?.showIfNeeded(<ROOT VIEW CONTROLLER>)
        OR
        consent?.showIfNeededOrRejected(daysAgo: 1, viewController: <ROOT VIEW CONTROLLER>)
    }
    ...
}

// MARK: - AATManagedConsentDelegate
extension AppDelegate: AATManagedConsentDelegate {
    func managedConsentNeedsUserInterface(_ managedConsent: AATManagedConsent) {
        // CMP is loaded and ready to be shown
        // Show the CMP using the root view controller
        managedConsent.showIfNeeded(<ROOT VIEW CONTROLLER>)
    }

    func managedConsentCMPFinished(with state: AATManagedConsentState) {
      // The user finished his action with CMP with the state as the user chosen state
    }

    func managedConsentCMPFailedToLoad(_ managedConsent: AATManagedConsent, with error: String) {
        // CMP failed to load with the error message.
        // Consider reloading the CMP using the active view controller:
        // managedConsent.reload(<ROOT VIEW CONTROLLER>)
        // if you know that the user is in GDPR region
    }

    func managedConsentCMPFailedToShow(_ managedConsent: AATManagedConsent, with error: String) {
        // CMP failed to show with the error message
    }
}
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
@implementation AppDelegate
...
- (void)configureAATKit {
    AATConfiguration *configuration = [[AATConfiguration alloc] init];
    configuration.delegate = self;
    AATCMPGoogle *cmp = [[AATCMPGoogle alloc] init];
    AATManagedConsent *consent = [[AATManagedConsent alloc] initWithCmp:cmp delegate:self];
    configuration.consent = consent;
    [AATSDK initAATKitWith:configuration];
    [consent showIfNeeded:<ROOT VIEW CONTROLLER>];
    OR
    [self.consent showIfNeededOrRejectedWithDaysAgo:1 viewController:<ROOT VIEW CONTROLLER>];
}
...
#pragma mark - AATManagedConsentDelegate
- (void)managedConsentNeedsUserInterface:(AATManagedConsent * _Nonnull)managedConsent {
    // CMP is loaded and ready to be shown
    // Show the CMP using the root view controller
    [managedConsent showIfNeeded:<ROOT VIEW CONTROLLER>];
}

- (void)managedConsentCMPFinishedWith:(enum AATManagedConsentState)state {
    // The user finished his action with CMP with the state as the user chosen state
}

- (void)managedConsentCMPFailedToLoad:(AATManagedConsent * _Nonnull)managedConsent with:(NSString * _Nonnull)error {
    // CMP failed to load with the error message.
    // Consider reloading the CMP using the active view controller:
    // [managedConsent reload:<ROOT VIEW CONTROLLER>];
    // if you know that the user is in GDPR region
}

- (void)managedConsentCMPFailedToShow:(AATManagedConsent * _Nonnull)managedConsent with:(NSString * _Nonnull)error {
    // CMP failed to show with the error message
}
@end
```

{% endtab %}
{% endtabs %}
