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 GMA Next-Gen 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
- GMA Next-Gen SDK version 0.6.0-alpha01 or higher.
Pass the application ID to the SDK
If you already have an AdMob application ID, initialize the GMA Next-Gen SDK with your existing application ID.
If you don't have an AdMob application ID, pass in InitializationConfig.WEBVIEW_APIS_FOR_ADS_APPLICATION_ID
as the application ID
when you initialize the GMA Next-Gen SDK
.
Kotlin
MobileAds
.
initialize
(
this
@MainActivity
,
// Use this application ID to initialize the GMA Next-Gen SDK if
// you don't have an AdMob application ID.
InitializationConfig
.
Builder
(
InitializationConfig
.
WEBVIEW_APIS_FOR_ADS_APPLICATION_ID
)
.
build
(),
)
{
// Adapter initialization complete.
}
Java
MobileAds
.
initialize
(
this
,
// Use this application ID to initialize the GMA Next-Gen SDK if
// you don't have an AdMob application ID.
new
InitializationConfig
.
Builder
(
InitializationConfig
.
WEBVIEW_APIS_FOR_ADS_APPLICATION_ID
)
.
build
(),
initializationStatus
-
>
{
// Adapter initialization is complete.
});
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
.
Kotlin
import
android.webkit.CookieManager
import
android.webkit.WebView
import
com.google.android.libraries.ads.mobile.sdk.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
)
// Let the web view accept third-party cookies.
CookieManager
.
getInstance
().
setAcceptThirdPartyCookies
(
webView
,
true
)
// Let the web view use JavaScript.
webView
.
settings
.
javaScriptEnabled
=
true
// Let the web view access local storage.
webView
.
settings
.
domStorageEnabled
=
true
// Let HTML videos play automatically.
webView
.
settings
.
mediaPlaybackRequiresUserGesture
=
false
// Register the web view.
MobileAds
.
registerWebView
(
webView
)
}
}
Java
import
android.webkit.CookieManager
;
import
android.webkit.WebView
;
import
com.google.android.libraries.ads.mobile.sdk.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
);
}
}
Test your integration
Before using your own URL, we recommend that you load the following URL to test the integration:
https://google.github.io/webview-ads/test/#api-for-ads-tests
The test URL shows green status bars for a successful integration if the following conditions apply:
-
WebViewconnected to the GMA Next-Gen 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 theWebViewand its corresponding web content being monetized, work with your consent management platform to gather consent in theWebViewcontext.

