Используйте WebView API for Ads

WebView API for Ads позволяет монетизировать рекламу в приложении с помощью WebViewController. Если вы показываете веб-контент, в котором реализованы объявления с кодом AdSense или тегом Google Publisher Tag, в своем приложении через WebViewController, вам следует использовать этот API, чтобы включить монетизацию объявлений. Подробную информацию вы найдете в правилах AdSense и Менеджера рекламы.

  1. Монетизируйте контент, отправляя запросы объявлений с помощью Google Mobile Ads Flutter Plugin

    Вы можете монетизировать свое приложение, отправляя запросы объявлений в Менеджер рекламы с помощью Google Mobile Ads Flutter Plugin. Для этого необходимо реализовать форматы объявлений для мобильных приложений.

    Подробнее…

  2. Как настроить монетизацию с помощью WebView API for Ads

    Если ваше приложение использует WebViewController для показа веб-контента, в котором размещаются объявления из Менеджера рекламы или AdSense, используйте WebView API for Ads, чтобы зарегистрировать объекты WebViewController в Google Mobile Ads Flutter Plugin. Код JavaScript в коде AdSense или теге Google Publisher Tag создает и отправляет запросы объявлений, поэтому вам не нужно делать это с помощью SDK. Обратите внимание, что при использовании этого API доступны только форматы инвентаря для мобильных сайтов и обычных сайтов.

    Если вы не владеете веб-контентом в WebViewController, мы все равно рекомендуем использовать этот API, чтобы защитить рекламодателей от спама и повысить доход веб-издателей, предоставивших контент.

Вы можете выбрать один из вариантов или оба сразу.

Это руководство поможет вам интегрировать WebView API for Ads в приложение для iOS.

Подготовка

Прежде чем начать работу с WebView API for Ads, выполните следующие действия:

Пропустить проверку идентификатора приложения

Android

Добавьте в файл AndroidManifest.xml тег <meta-data>, чтобы пропустить проверку APPLICATION_ID. Если вы пропустите этот шаг, Google Mobile Ads Flutter Plugin может выдать ошибку 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

Чтобы пропустить проверку GADApplicationIdentifier, добавьте в файл Runner/Info.plist ключ и строковое значение, указанные ниже. Если вы пропустите этот шаг, Google Mobile Ads Flutter Plugin может выдать ошибку GADInvalidInitializationException при запуске приложения.

<!-- Bypass GADApplicationIdentifier check for WebView API for Ads -->
<key>GADIntegrationManager</key>
<string>webview</string>

Зарегистрируйте WebViewController

Чтобы повысить доход от рекламы в приложении, которая показывается в WebViewController с помощью кода AdSense или тегов Google Publisher Tag, выполните следующие действия:

  1. Включите JavaScript в WebViewController. В противном случае объявления могут не загружаться.

  2. Чтобы повысить качество рекламы и обеспечить соответствие правилам Chrome в отношении файлов cookie, включите сторонние файлы cookie в своем экземпляре AndroidWebViewController.

  3. Зарегистрируйте экземпляр WebViewController, вызвав метод registerWebView(), предоставляемый Google Mobile Ads Flutter Plugin.

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);
  }
}

Загрузите URL.

Теперь вы можете загрузить URL и показывать веб-контент через WebViewController. Прежде чем использовать собственный URL, рекомендуем загрузить тестовый URL: https://google.github.io/webview-ads/test/. Если 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://google.github.io/webview-ads/test/'));
  }

Если интеграция выполнена успешно, то в тестовом URL будут показаны зеленые строки состояния. Это произойдет при соблюдении следующих условий:

  • Устройство WebView подключено к Google Mobile Ads Flutter Plugin.
  • JavaScript включен
  • Сторонние файлы cookie работают (не ожидается на iOS-устройствах).
  • Собственные файлы cookie работают

Посмотрите исходный код тестового URL. Затем вы можете заменить тестовый URL на свой. Вы также можете использовать прокси-инструмент, например Charles, чтобы перехватывать HTTPS-трафик приложения и проверять запросы объявлений на наличие параметра &scar=.