Integrate the WebView API for Ads

The web view APIs for ads makes app signals available to the tags in your WebView, helping to improve monetization for the publishers that provided the content and protect advertisers from spam.

How it works

Communication with the Google Mobile Ads SDK only happens in response to ad events triggered by any of the following:

The SDK adds message handlers to the registered WebView to listen for these ad events. For a better sense of how this works, view the source code of the test page.

Prerequisites

  • Google Mobile Ads SDK version 20.6.0 or higher.
  • Android API level 21 or higher.

  • Add the following <meta-data> tag in your AndroidManifest.xml file to bypass the check for the APPLICATION_ID. If you miss this step and don't provide the <meta-data> tag, the Google Mobile Ads SDK throws an IllegalStateException on app start.

    <!-- Bypass APPLICATION_ID check for web view APIs for ads -->
     <meta-data
         android:name="com.google.android.gms.ads.INTEGRATION_MANAGER"
         android:value="webview"/>
    

Register the web view

Call registerWebView() on the main thread to establish a connection with the JavaScript handlers in the AdSense code or Google Publisher Tag within each WebView instance. This should be done as early as possible, such as in the onCreate() method of your MainActivity.

Java

import android.webkit.CookieManager;
import android.webkit.WebView;
import com.google.android.gms.ads.MobileAds;

public class MainActivity extends AppCompatActivity {
  private WebView webView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = findViewById(R.id.webview);

    // Let the web view accept third-party cookies.
    CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
    // Let the web view use JavaScript.
    webView.getSettings().setJavaScriptEnabled(true);
    // Let the web view access local storage.
    webView.getSettings().setDomStorageEnabled(true);
    // Let HTML videos play automatically.
    webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

    // Register the web view.
    MobileAds.registerWebView(webView);
  }
}

Kotlin

import android.webkit.CookieManager
import android.webkit.WebView
import com.google.android.gms.ads.MobileAds

class MainActivity : AppCompatActivity() {
  lateinit var webView: WebView

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    webView = findViewById(R.id.webview)

    // Enable third-party cookies.
    CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
    // Enable JavaScript in the WebView.
    webView.settings.javaScriptEnabled = true
    // Enable DOM storage in the WebView.
    webView.settings.domStorageEnabled = true
    // Enable videos to play automatically.
    webView.settings.mediaPlaybackRequiresUserGesture = false

    // Register the web view.
    MobileAds.registerWebView(webView)
  }
}

Test your integration

Before using your own URL, we recommend that you load the following URL to test the integration:

https://webview-api-for-ads-test.glitch.me#api-for-ads-tests

The test URL shows green status bars for a successful integration if the following conditions apply:

  • WebView connected to the Google Mobile Ads SDK

Next steps

  • Gather consent in WebView. The Web view APIs for Ads doesn't propagate consent collected in the mobile app context using IAB TCF v2.0 or IAB CCPA compliance frameworks to the tags in your web views. If you're interested in implementing a single consent flow as the owner of both the WebView and its corresponding web content being monetized, work with your consent management platform to gather consent in the WebView context.