Skip to content

User Consent Flow

d.eshenko edited this page Jan 25, 2024 · 15 revisions

⚡ Before you start
Make sure you have correctly Privacy Regulations.


In order for CAS and our ad providers to deliver ads that are more relevant to your users, as a mobile app publisher, you need to collect explicit user consent.

Note

If you implement a CMP that is compliant with IAB TCF v2 (Transparency & Consent Framework) for your user consent flow, the CAS SDK supports sending the TCF v2 consent to networks. In this case, the CAS Consent Flow will not be shown to the user.

Warning

If you integrate your own CMP flow, make sure the flow completes before you initialize the CAS SDK.

1. Asking Apple's user permission to track them or access their device’s advertising identifier

With iOS 14.5 and later, you need to receive the user’s permission through the AppTrackingTransparency framework in order to track them or access their device’s advertising identifier.

Warning

If an iOS App does not present this request, the IDFA will automatically be zeroed out, which may lead to a significant loss in ad revenue.

Note

Read more about Asking Permission to Track and AppTrackingTransparency Framework on Apple developer page

2. Opt-in consent for the collection and use of personal data in the regions covered by GDPR, CCPA, LGPD, PIPEDA.

Any businesses established are required to comply with GDPR in Europe, CCPA in California, LGPD in Brazil, PIPEDA in Canada or risk facing heavy fines.

Note

Keep in mind that it’s best to contact qualified legal professionals, if you haven’t done so already, to get more information and be well-prepared for compliance.

Read more about:

To provide users of your app with a consent dialog, review the possible solutions and select one for your app.

Automatic consent flow

The automatic ask for consent from the user introduced in CAS 3.0. To get consent for collecting personal data of your users, we suggest you use a built-in Consent Flow, comes with a pre-made consent form that you can easily present to your users. That means you no longer need to create your own consent window.

The user will see the consent flow when your app create CAS Manager. When the user completes the flow, the SDK calls your initialization-completion handler.

let builder = CAS.MobileAds.BuildManager();
builder.WithInitListener((success, error) => {
    // The user completes the flow here
    
    // Consent status can be checked via
    // var consent = CAS.MobileAds.settings.userConsent;

    // Initialize other 3rd-party SDKs
});

Don't forget to apply the configuration by calling the builder.Build() function.

Important

You must wait until the user finishes the consent flow before you initialize third-party SDKs (such as MMPs or analytics SDKs). For this reason, initialize such SDKs from within your initialization-completion callback. If you were to initialize these third-party SDKs before the user completes the consent flow, these third-party SDKs would not be able to access relevant identifiers and you would suffer a material impact on measurement, reporting, and ad revenue.

Privacy Policy URL

One requirement of the consent dialog is to provide the user with a link to the Privacy Policy.
To add a link to the Privacy policy, create CAS Manager WithConsentFlow():

builder.WithConsentFlow(
    new ConsentFlow()
        .WithPrivacyPolicy("https://url_to_privacy_policy")
);

Note

If you don't define a link to your application's policy, the user will follow the link to Clever Ads Solutions policy.

Overview flow

Android Consent Flow

iOS Consent Flow

iOSConsentFlow

  1. Pre-request user permission form for tracking.
  2. System request from Apple App Tracking Transparency framework.
  3. Opt-in consent for the collection and use of personal data in the regions covered by GDPR, CCPA, LGPD, PIPEDA.

Note

Above are screenshots of the built-in CAS Consent Flow; Google User Messaging Platform dialog looks different.

Users will not see the ATT request if at least one of the following is true

  • Users using iOS versions below 14.5
  • Users who have indicated that they do not allow apps to ask to track them, by setting Settings > Privacy, Allow Apps to Request to Track
  • Users with child accounts, or who are under age 18, who are signed in via their Apple ID
  • Users who have already answered so far
  • The app does not have a usage tracking description in Info.plist under NSUserTrackingUsageDescription key

Users will not see the Consent dialog if at least one of following is true

  • Users located in regions that are not covered by information protection
  • Users who are subject to COPPA restrictions.
  • Users who have seen the Google User Messaging Platform form.
  • Users for whom consent is defined in the CAS.MobileAds.settings.userConsent

Disable flow

CAS consent flow is enabled by default. You can disable the consent flow by creating CAS Manager WithConsentFlow():

builder.WithConsentFlow(
    new ConsentFlow(isEnabled: false)
);

Manual consent flow

To display the consent dialog at any time separately from the initialization of advertising using the following method.

MobileAds.ShowConsentFlow(
  new ConsentFlow()
    .WithCompletionListener(() => {
        if (MobileAds.settings.userConsent == ConsentStatus.Accepted) {
            // any actions here
        }
    })
);

If you need to perform any actions after the user has made a choice the dialog, place that logic in the CompletionListener.

Meta Audience Network Data Processing Options for Users in California

The CAS does not support your handling of CCPA opt-out values for Meta Audience Network, you must work directly with the network to purposes of your obligations for CCPA compliance.

To learn how to implement Meta Audience Network’s “Limited Data Use” flag, read the Additional Meta AudienceNetwork steps.

Custom Consent Logic

The following instructions apply if you are using your own or a third-party party consent mechanism.

Important

If you access Google demand through CAS, it’s critical that you review the Google CMP requirements before you start the integration process.

Warning

You must set the privacy options before creating the CAS Manager to disable the automatic CAS consent flow and advertising SDKs are initialized respecting the user's consent.

Request Apple App Tracking Transparency framework

Call CAS.ATTrackingStatus.Request() to present the app-tracking authorization request to the end user.
We recommend waiting for the completion callback prior to initialize CAS SDK so that if the user grants the App Tracking Transparency permission, the CAS mediation can use the IDFA in ad requests.

CAS.ATTrackingStatus.Request( ( status ) =>
{
    // Tracking authorization completed. Start initialize here.
    CAS.MobileAds.BuildManager().Initialize();
    // Initialize other third-party SDKs such as MMPs or analytic
    // Do not initialize mediated advertising SDKs (CAS does that for you).
} );

For a better user experience, we recommend adding a Pre permission pop-up preceding the call to CAS.ATTrackingStatus.Request() to clarify the permission and data usage to users.

Consent in GDPR and Other regions

CAS shares these set consent values via adapters to supported mediation partners.

If the user consents to interest-based advertising, set the user consent Accepted flag:

CAS.MobileAds.settings.userConsent = ConsentStatus.Accepted;

If the user does NOT consent to interest-based advertising, set the user consent Denied flag:

CAS.MobileAds.settings.userConsent = ConsentStatus.Denied;

Once you set the consent value, CAS will continue to respect that value for the lifetime of your application or until the user consents to interest-based advertising.

Multi-State Consumer privacy laws

California and Virginia laws may require you to display a “Do Not Sell or Share My Personal Information” link or provide other options to users located in those states to opt out of interest-based advertising. You must set a flag that indicates whether users in those states opt out of interest-based advertising or the sale or share of personal information for interest-based advertising.

If a user does NOT opt out of interest-based advertising, set the OptInSale flag:

CAS.MobileAds.settings.userCCPAStatus = CCPAStatus.OptInSale;

If a user does opt out of interest-based advertising, set the OptOutSale flag:

CAS.MobileAds.settings.userCCPAStatus = CCPAStatus.OptOutSale;

You do not need to set this flag for users who are outside California. If you do set this flag for such users, this will not impact how ads are served to them.


🔗 Done! What’s Next?

Clone this wiki locally