借助适用于广告的 WebView API,您可以使用
WebViewController
。
如果您展示的 Web 内容中包含
AdSense 代码或
Google 发布商代码
在您的应用中通过 WebViewController
植入广告,则应使用此 API 来启用广告
创收。如需了解详情,请参阅
AdSense
和 Ad Manager 政策。
- 使用 Google 移动广告 SDK 发出广告请求,从而实现创收
您可以向 Ad Manager 通过实施适用于移动设备的广告格式来使用 Google 移动广告 SDK 应用。
了解详情。
- 使用适用于广告的 WebView API 创收
如果您的应用使用
WebViewController
显示从 Ad Manager 或 AdSense,请使用适用于广告的 WebView API 进行注册WebViewController
对象。通过 AdSense 代码中的 JavaScript 或 Google 发布商代码 构建并发送广告请求,因此您无需使用 。请注意,只有移动网站和桌面版网站 广告资源格式 所有可用资源如果您不是
WebViewController
中的网络内容的所有者,您仍将 建议您使用此 API 来帮助保护广告客户免受垃圾内容和 提升提供相应内容的网络发布商的创收能力。
请注意,您可以在同一应用中执行上述任一操作,或同时执行这两种操作。
本指南旨在帮助您将适用于广告的 WebView API 集成到 iOS 应用。
准备工作
在开始使用适用于广告的 WebView API 之前,请务必执行以下操作:
- 使用 Google 移动广告 SDK for Flutter 插件 3.0.0 或更高版本的应用。
- 添加
webview_flutter
作为依赖项 添加到pubspec.yaml
文件中。 - 添加
webview_flutter_android
3.7.0 或更高版本的应用。
绕过对应用标识符的检查
Android
在 AndroidManifest.xml
文件中将以下 <meta-data>
标记添加到
绕过 APPLICATION_ID
检查。如果您错过了此步骤,Google
移动广告 SDK 可能会抛出
IllegalStateException
。
<!-- Bypass APPLICATION_ID check for WebView API for Ads -->
<meta-data
android:name="com.google.android.gms.ads.INTEGRATION_MANAGER"
android:value="webview"/>
iOS
使用以下键和字符串值将 Runner/Info.plist
文件更新为
绕过 GADApplicationIdentifier
检查。如果错过这个步骤
Google 移动广告 SDK 可能会抛出 GADInvalidInitializationException
。
<!-- Bypass GADApplicationIdentifier check for WebView API for Ads -->
<key>GADIntegrationManager</key>
<string>webview</string>
注册 WebViewController
为了提高应用内广告的变现能力
WebViewController
(使用 AdSense)
代码 或 Google 发布商
代码,请按以下步骤操作
如下所列:
在
WebViewController
中启用 JavaScript。否则可能会导致 广告。为了提高用户的并且与 Chrome 的 Cookie 政策、启用 第三方 Cookie。
AndroidWebViewController
通过调用
WebViewController
registerWebView()
方法。
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter_android/webview_flutter_android.dart';
@override
class WebViewExampleState extends State<WebViewExample> {
late final WebViewController controller;
@override
void initState() {
super.initState();
createWebView();
}
void createWebView() async {
controller = WebViewController();
// 1. Enable JavaScript in the web view.
await controller.setJavaScriptMode(JavaScriptMode.unrestricted);
// 2. Enable third-party cookies for Android.
if (controller.platform is AndroidWebViewController) {
AndroidWebViewCookieManager cookieManager = AndroidWebViewCookieManager(
const PlatformWebViewCookieManagerCreationParams());
await cookieManager.setAcceptThirdPartyCookies(
controller.platform as AndroidWebViewController, true);
}
// 3. Register the web view.
await MobileAds.instance.registerWebView(controller);
}
}
加载网址
您现在可以加载网址并通过 WebViewController
显示 Web 内容。
我们建议您加载以下测试网址:
https://webview-api-for-ads-test.glitch.me/
,用于测试集成,然后再
使用您自己的网址。如果 JavaScript 不是
。
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter_android/webview_flutter_android.dart';
@override
class WebViewExampleState extends State<WebViewExample> {
late final WebViewController controller;
@override
void initState() {
super.initState();
createWebView();
}
void createWebView() async {
controller = WebViewController();
// 1. Enable JavaScript in the web view.
await controller.setJavaScriptMode(JavaScriptMode.unrestricted);
// 2. Enable third-party cookies for Android.
if (controller.platform is AndroidWebViewController) {
AndroidWebViewCookieManager cookieManager = AndroidWebViewCookieManager(
const PlatformWebViewCookieManagerCreationParams());
await cookieManager.setAcceptThirdPartyCookies(
controller.platform as AndroidWebViewController, true);
}
// 3. Register the web view.
await MobileAds.instance.registerWebView(controller);
// 4. Load the URL.
await controller.loadRequest(Uri.parse('https://webview-api-for-ads-test.glitch.me/'));
}
如果集成成功,测试网址会显示绿色状态栏, 需要满足以下条件:
WebView
已关联到 Google 移动广告 SDK- 已启用 JavaScript
- 第三方 Cookie 能正常运行(不支持 iOS 设备)
- 第一方 Cookie 的工作原理
查看源代码
部分然后,您可以将测试网址替换为自己的网址。您还可以
请使用Charles等代理工具
应用的 HTTPS 流量,并检查广告请求中是否存在 &scar=
参数。