The web view APIs for ads makes app signals available to the tags in your
WKWebView
, 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
WKWebView
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 9.6.0 or higher.
Update the
Info.plist
file with the following key and string value. This bypasses a check the Google Mobile Ads SDK does for aGADApplicationIdentifier
value that applies to developers who implement ads outside of a web view. If you miss this step and don't provide aGADApplicationIdentifier
, the Google Mobile Ads SDK throws aGADInvalidInitializationException
on app start.<!-- Indicate Google Mobile Ads SDK usage is only for web view APIs for ads --> <key>GADIntegrationManager</key> <string>webview</string>
Register the web view
Call
register(_:)
on the main thread to establish a connection with the JavaScript handlers in the
AdSense code or Google Publisher Tag within each WKWebView
instance. This
should be done as early as possible, such as in the
viewDidLoad
method of your view controller.
Swift
import WebKit
class ViewController: UIViewController {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Initialize a WKWebViewConfiguration object.
let webViewConfiguration = WKWebViewConfiguration()
// Let HTML videos with a "playsinline" attribute play inline.
webViewConfiguration.allowsInlineMediaPlayback = true
// Let HTML videos with an "autoplay" attribute play automatically.
webViewConfiguration.mediaTypesRequiringUserActionForPlayback = []
// Initialize the WKWebView with your WKWebViewConfiguration object.
webView = WKWebView(frame: view.frame, configuration: webViewConfiguration)
view.addSubview(webView)
// Register the web view.
GADMobileAds.sharedInstance().register(webView)
}
}
Objective-C
@import WebKit;
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic, strong) WKWebView *webView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Initialize a WKWebViewConfiguration object.
WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init];
// Let HTML videos with a "playsinline" attribute play inline.
webViewConfiguration.allowsInlineMediaPlayback = YES;
// Let HTML videos with an "autoplay" attribute play automatically.
webViewConfiguration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
// Initialize the WKWebView with your WKWebViewConfiguration object.
self.webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:webViewConfiguration];
[self.view addSubview:self.webView];
// Register the web view.
[GADMobileAds.sharedInstance registerWebView:self.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:
WKWebView
connected to the Google Mobile Ads SDK
Next steps
- Gather consent in
WKWebView
. 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 theWKWebView
and its corresponding web content being monetized, work with your consent management platform to gather consent in theWKWebView
context.