WebView API for Ads 支持使用 WebView
在应用内实现广告创收。如果您通过 WebView
在应用中展示植入了 AdSense 代码或 Google 发布商代码的广告的网络内容,则应使用此 API 来启用广告创收。如需了解详情,请参阅AdMob 政策。
通过 Google 移动广告 SDK 发出广告请求,从而创收
通过实现适用于移动应用的广告格式,您可以利用 Google 移动广告 SDK 向 AdMob 发出广告请求,从而通过应用创收。
了解详情。
使用 WebView API for Ads 创收
如果您的应用使用
WebView
显示用于投放来自 Ad Manager 或 AdSense 广告的网页内容,请使用 WebView API for Ads 向 Google 移动广告 SDK 注册WebView
对象。AdSense 代码或 Google 发布商代码中的 JavaScript 负责构建并发送广告请求,因此您无需使用 SDK 发出任何广告请求。 请注意,只有移动网站和桌面版网站广告资源格式才可使用此 API。如果您不是
WebView
中的网页内容的所有者,我们仍建议您使用此 API 帮助广告客户防范垃圾内容,并提高提供相应内容的网站发布商的创收能力。
请注意,您可以在同一应用中执行这两种操作,也可以同时采用这两种方式。
本指南旨在帮助您将 WebView API for Ads 集成到 Android 应用中。
前提条件
- Google 移动广告 SDK 20.6.0 或更高版本
- 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)
启用第三方 Cookie
为了提升用户的广告体验,并确保其与 Chrome 的 Cookie 政策保持一致,请在 WebView
实例上启用第三方 Cookie。
Java
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
Kotlin
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
注册 WebView
使用该 API 的第一步是注册每个可以展示广告的 WebView
。您需要使用 Google 移动广告 SDK 提供的 registerWebView()
方法,与每个 WebView
中的 AdSense 代码或 Google 发布商代码中的 JavaScript 处理程序建立连接:
- 在
WebView
中启用 JavaScript。否则可能会导致下一步中的测试网页发生错误,并导致广告无法加载。 - 为获得最佳效果,请启用第三方 Cookie(请先注册您的
WebView
)。 我们建议在完成所有涉及界面的任务后,在第一个网址加载完毕之前尽早调用
registerWebView()
。以下示例展示了如何在MainActivity
的onCreate()
方法中注册WebView
。Java
package ... import ... import android.webkit.CookieManager; 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); // Enable third-party cookies. CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true); ... // Register the WebView. MobileAds.registerWebView(webView); ... } ... }
Kotlin
package ... import ... import android.webkit.CookieManager 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 // Enable third-party cookies. CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true) ... // Register the WebView. MobileAds.registerWebView(webView) ... } ... }
加载网址
您现在可以使用 loadUrl()
方法加载网址并通过 WebView
显示网页内容。我们建议您加载此测试网址 (https://webview-api-for-ads-test.glitch.me/
),以便在使用您自己的网址之前测试集成。
Java
package ... import ... import android.webkit.CookieManager; 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); // Enable third-party cookies. CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true); ... // Register the WebView. MobileAds.registerWebView(webView); webView.loadUrl("https://webview-api-for-ads-test.glitch.me/"); ... } ... }
Kotlin
package ... import ... import android.webkit.CookieManager 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 // Enable third-party cookies. CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true); ... // Register the WebView. MobileAds.registerWebView(webView) webView.loadUrl("https://webview-api-for-ads-test.glitch.me/") ... } ... }
如果集成成功,应用会显示“WebView 与 GMA SDK 的集成已确认!”。然后,您可以使用自己的网址替换测试网址。