集成适用于广告的 WebView API

借助适用于广告的 WebView API,您可以使用 WebViewController。 如果您展示的 Web 内容中包含 AdSense 代码Google 发布商代码 在您的应用中通过 WebViewController 植入广告,则应使用此 API 来启用广告 创收。如需了解详情,请参阅 AdSenseAd Manager 政策。

  1. 使用 Google 移动广告 SDK 发出广告请求,从而实现创收

    您可以向 Ad Manager 通过实施适用于移动设备的广告格式来使用 Google 移动广告 SDK 应用

    了解详情

  2. 使用适用于广告的 WebView API 创收

    如果您的应用使用 WebViewController 显示从 Ad ManagerAdSense,请使用适用于广告的 WebView API 进行注册 WebViewController 对象。通过 AdSense 代码中的 JavaScript 或 Google 发布商代码 构建并发送广告请求,因此您无需使用 。请注意,只有移动网站和桌面版网站 广告资源格式 所有可用资源

    如果您不是WebViewController中的网络内容的所有者,您仍将 建议您使用此 API 来帮助保护广告客户免受垃圾内容和 提升提供相应内容的网络发布商的创收能力。

请注意,您可以在同一应用中执行上述任一操作,或同时执行这两种操作。

本指南旨在帮助您将适用于广告的 WebView API 集成到 iOS 应用。

准备工作

在开始使用适用于广告的 WebView API 之前,请务必执行以下操作:

绕过对应用标识符的检查

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 发布商 代码,请按以下步骤操作 如下所列:

  1. WebViewController 中启用 JavaScript。否则可能会导致 广告。

  2. 为了提高用户的并且与 Chrome 的 Cookie 政策、启用 第三方 Cookie。AndroidWebViewController

  3. 通过调用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= 参数。