集成适用于广告的 WebView API

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

WebView API for Ads 允许使用 WebView 进行应用内广告创收。如果您通过 WebView 在应用中展示利用 AdSense 代码Google 发布商代码实现广告的网页内容,则应使用此 API 来启用广告创收。如需了解详情,请参阅AdMob 政策

  1. 通过 Google 移动广告 SDK 发出广告请求来创收

    您可以使用 Google 移动广告 SDK 向 AdMob 发出广告请求,从而通过适用于移动应用的广告格式通过应用创收。

    了解详情

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

    如果您的应用使用 WebView 显示从 Ad ManagerAdSense 投放广告的网络内容,请使用 WebView API for Ads 向 Google 移动广告 SDK 注册 WebView 对象。AdSense 代码Google 发布商代码中的 JavaScript 会构建并发送广告请求,这样您就无需使用 SDK 发出任何广告请求。请注意,只有移动网站和桌面版网站的广告资源格式可用于此 API。

    即使您不拥有 WebView 中的网页内容,我们也建议您使用此 API 帮助保护广告客户免受垃圾内容的侵扰,并为提供相应内容的网站发布商提高创收能力。

请注意,您可以在同一应用中执行上述任一或全部操作。

本指南旨在帮助您将 WebView API for Ads 集成到 Android 应用中。

准备工作

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

  • 在您的应用中使用版本为 20.6.0 或更高版本的 Google 移动广告 SDK
  • 使用 Android API 级别 21 或更高级别。
  • 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"/>
    

将 WebView 添加到布局中

如需在 activity 中显示网页内容,您可以将 WebView 放在相应的 XML 布局文件中。以下示例展示了 Activity 的 WebView

# activity_main.xml
...
<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
/>
...

或者,您也可以通过编程方式创建 WebView

Java

WebView webView = new WebView(this);

Kotlin

var webView: WebView? = WebView(this)

注册 WebView

使用该 API 的第一步是注册可能展示广告的每个 WebView。您需要使用 Google 移动广告 SDK 提供的 registerWebView() 方法,与每个 WebView 中的 AdSense 代码Google 发布商代码中的 JavaScript 处理程序建立连接:

  1. WebView 中启用 JavaScript。否则,可能会导致测试网页在下一步中出现错误,并导致广告无法加载。
  2. 我们建议您在完成所有涉及界面的任务后,在第一个网址加载完毕之前尽早调用 registerWebView()。以下示例展示了如何在 MainActivityonCreate() 方法中注册 WebView

Java

  package ...

  import ...
  import android.webkit.WebView;
  import com.google.android.gms.ads.MobileAds;

  public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      webView = findViewById(R.id.webview);
      // Enable JavaScript in the WebView.
      webView.getSettings().setJavaScriptEnabled(true);
      ...
      // Register the WebView.
      MobileAds.registerWebView(webView);
      ...
    }
    ...
  }

Kotlin

  package ...

  import ...
  import android.webkit.WebView
  import com.google.android.gms.ads.MobileAds

  class MainActivity : AppCompatActivity() {
    lateinit var webView: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      webView = findViewById(R.id.webview)
      // Enable JavaScript in the WebView.
      webView.settings.javaScriptEnabled = true
      ...
      // Register the WebView.
      MobileAds.registerWebView(webView)
      ...
    }
    ...
  }

加载网址

您现在可以使用 loadUrl() 方法加载网址,并通过 WebView 显示网页内容。我们建议您在加载您自己的测试网址 (https://webview-api-for-ads-test.glitch.me/) 之前测试集成。

Java

  package ...

  import ...
  import android.webkit.WebView;
  import com.google.android.gms.ads.MobileAds;

  public class MainActivity extends AppCompatActivity {
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      webView = findViewById(R.id.webview);
      // Enable JavaScript in the WebView.
      webView.getSettings().setJavaScriptEnabled(true);
      ...
      // Register the WebView.
      MobileAds.registerWebView(webView);
      webView.loadUrl("https://webview-api-for-ads-test.glitch.me/");
      ...
    }
    ...
  }

Kotlin

  package ...

  import ...
  import android.webkit.WebView
  import com.google.android.gms.ads.MobileAds

  class MainActivity : AppCompatActivity() {
    lateinit var webView: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)
      webView = findViewById(R.id.webview)
      // Enable JavaScript in the WebView.
      webView.settings.javaScriptEnabled = true
      ...
      // Register the WebView.
      MobileAds.registerWebView(webView)
      webView.loadUrl("https://webview-api-for-ads-test.glitch.me/")
      ...
    }
    ...
  }

如果集成成功,应用应显示“WebView 与 GMA SDK 已确认!”现在,您可以将测试网址替换为网址。