API WebView для рекламы позволяет монетизировать рекламу в приложении с помощью WebViewController . Если вы отображаете в приложении веб-контент, содержащий рекламу с кодом AdSense или тегом Google Publisher Tag, через WebViewController , вам следует использовать этот API для монетизации рекламы. Подробнее см. в правилах AdMob . 
- Монетизируйте, отправляя запросы на рекламу с помощью Google Mobile Ads SDK
- Вы можете монетизировать свое приложение, отправляя запросы на рекламу в AdMob с помощью Google Mobile Ads SDK, реализуя форматы рекламы для мобильных приложений . 
 
- Монетизируйте с помощью API WebView для рекламы
- Если ваше приложение использует - WebViewControllerдля отображения веб-контента, содержащего рекламу из Менеджера рекламы или AdSense , используйте API WebView для рекламы, чтобы зарегистрировать объекты- WebViewControllerв Google Mobile Ads SDK. JavaScript в коде AdSense или теге Google Publisher Tag формирует и отправляет запросы на рекламу, поэтому вам не нужно отправлять запросы на рекламу через SDK. Имейте в виду, что этот API поддерживает только форматы инвентаря для мобильных устройств и компьютеров.- Если вы не являетесь владельцем веб-контента в - WebViewController, вам все равно рекомендуется использовать этот API для защиты рекламодателей от спама и улучшения монетизации веб-издателей, предоставивших контент.
 
Обратите внимание, что вы можете выполнить любой из вариантов или даже оба в одном приложении.
Это руководство призвано помочь вам интегрировать API WebView для рекламы в ваше приложение iOS.
Прежде чем начать
Прежде чем начать использовать API WebView для рекламы, убедитесь, что вы выполнили следующее:
- Используйте в своем приложении плагин Google Mobile Ads SDK для Flutter версии 3.0.0 или выше.
-  Добавьте webview_flutterкак зависимость в файлpubspec.yaml.
-  Добавьте webview_flutter_androidверсии 3.7.0 или выше в свое приложение.
Обойти проверку идентификатора приложения
Андроид
 Добавьте следующий тег <meta-data> в файл AndroidManifest.xml , чтобы обойти проверку APPLICATION_ID . Если вы пропустите этот шаг, Google Mobile Ads 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 Mobile Ads SDK может выдать исключение GADInvalidInitializationException при запуске приложения.
<!-- Bypass GADApplicationIdentifier check for WebView API for Ads -->
<key>GADIntegrationManager</key>
<string>webview</string>
Регистрация WebViewController
 Чтобы улучшить монетизацию рекламы в приложении в WebViewController , который использует код AdSense или теги Google Publisher , выполните следующие действия:
- Включите JavaScript в - WebViewController. В противном случае реклама может не загружаться.
- Чтобы улучшить восприятие рекламы пользователями и соответствовать политике Chrome в отношении файлов cookie , включите сторонние файлы cookie в экземпляре - AndroidWebViewController.
- Зарегистрируйте экземпляр - WebViewController, вызвав метод- registerWebView(), предоставляемый Google Mobile Ads SDK.
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-адрес: https://google.github.io/webview-ads/test/ , чтобы проверить интеграцию, прежде чем использовать собственный URL-адрес. Если 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 SDK
- JavaScript включен
- Работают сторонние файлы cookie (не ожидается на устройствах iOS)
- Работают основные файлы cookie
 Посмотрите исходный код нашего тестового URL. Вы можете заменить тестовый URL своим. Вы также можете использовать прокси-сервис, например Charles , для захвата HTTPS-трафика вашего приложения и проверки рекламных запросов на наличие параметра &scar= . 
