橫幅廣告

橫幅廣告佔據應用佈局中的一個位置,位於設備屏幕的頂部或底部。當用戶與應用程序交互時,它們會停留在屏幕上,並且可以在一段時間後自動刷新。如果您不熟悉移動廣告,那麼它們是一個很好的起點。案例研究

本指南向您展示如何將AdMob 中的橫幅廣告集成到 Android 應用程序中。除了代碼片段和說明之外,它還包括有關正確調整橫幅大小的信息以及指向其他資源的鏈接。

先決條件

將 AdView 添加到佈局中

顯示橫幅的第一步是將AdView放置在要在其中顯示它的ActivityFragment的佈局中。最簡單的方法是在相應的 XML 佈局文件中添加一個。這是一個顯示活動AdView的示例:

# main_activity.xml
...
  <com.google.android.gms.ads.AdView
      xmlns:ads="http://schemas.android.com/apk/res-auto"
      android:id="@+id/adView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_alignParentBottom="true"
      ads:adSize="BANNER"
      ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
  </com.google.android.gms.ads.AdView>
...

請注意以下必需屬性:

  • ads:adSize - 將此設置為您想要使用的廣告尺寸。如果您不想使用常量定義的標準尺寸,您可以設置自定義尺寸。有關詳細信息,請參閱下面的橫幅尺寸部分
  • ads:adUnitId - 將此設置為為您的應用中要顯示廣告的廣告單元提供的唯一標識符。如果您在不同的活動中展示橫幅廣告,則每個活動都需要一個廣告單元。

您也可以通過編程方式創建AdView

爪哇

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

科特林

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

始終使用測試廣告進行測試

在構建和測試您的應用程序時,請確保您使用的是測試廣告,而不是實際的生產廣告。否則可能會導致您的帳戶被暫停。

加載測試廣告的最簡單方法是使用我們的 Android 橫幅專用測試廣告單元 ID:

ca-app-pub-3940256099942544/6300978111

它經過特殊配置,可針對每個請求返回測試廣告,您可以在編碼、測試和調試時在自己的應用程序中自由使用它。只需確保在發布應用之前將其替換為您自己的廣告單元 ID。

有關移動廣告 SDK 的測試廣告如何工作的更多信息,請參閱測試廣告

加載廣告

一旦 AdView 就位,下一步就是加載廣告。這是通過AdView類中的loadAd()方法完成的。它需要一個AdRequest參數,該參數保存有關單個廣告請求的運行時信息(例如定位信息)。

下面是一個示例,展示瞭如何在ActivityonCreate()方法中加載廣告:

MainActivity(摘錄)

爪哇

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

科特林

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

而已!您的應用現在可以顯示橫幅廣告了。

廣告事件

要進一步自定義廣告的行為,您可以掛鉤廣告生命週期中的許多事件:加載、打開、關閉等。您可以通過AdListener類監聽這些事件。

要將AdListenerAdView一起使用,請調用setAdListener()方法:

爪哇

mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
        // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }

    @Override
    public void onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
});

科特林

mAdView.adListener = object: AdListener() {
    override fun onAdLoaded() {
        // Code to be executed when an ad finishes loading.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
        // Code to be executed when an ad request fails.
    }

    override fun onAdOpened() {
        // Code to be executed when an ad opens an overlay that
        // covers the screen.
    }

    override fun onAdClicked() {
        // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
        // Code to be executed when the user is about to return
        // to the app after tapping on an ad.
    }
}

AdListener中的每個可重寫方法都對應於廣告生命週期中的一個事件。

可覆蓋的方法
onAdLoaded() onAdLoaded()方法在廣告加載完成後執行。例如,如果您想延遲將AdView添加到您的活動或片段中,直到您確定將加載廣告,您可以在此處執行此操作。
onAdFailedToLoad() onAdFailedToLoad()方法是唯一包含參數的方法。 LoadAdError類型的錯誤參數描述了發生了什麼錯誤。有關詳細信息,請參閱調試廣告加載錯誤文檔
onAdOpened()當用戶點擊廣告時調用此方法。
onAdClosed()當用戶在查看廣告的目標 URL 後返回應用程序時,將調用此方法。您的應用程序可以使用它來恢復暫停的活動或執行任何其他必要的工作以使其為交互做好準備。請參閱AdMob AdListener示例,了解 Android API Demo 應用中廣告偵聽器方法的實現。

下表列出了標準橫幅尺寸。

以 dp 為單位的尺寸 (WxH)描述可用性AdSize 常數
320x50橫幅手機和平板電腦BANNER
320x100大橫幅手機和平板電腦LARGE_BANNER
300x250 IAB 中矩形手機和平板電腦MEDIUM_RECTANGLE
468x60 IAB 全尺寸橫幅平板電腦FULL_BANNER
728x90 IAB 排行榜平板電腦LEADERBOARD
提供的寬度x自適應高度自適應橫幅手機和平板電腦不適用
屏幕寬度x 32|50|90智能橫幅手機和平板電腦SMART_BANNER
了解有關旨在取代智能橫幅自適應橫幅的更多信息。

要定義自定義橫幅尺寸,請設置所需的AdSize ,如下所示:

爪哇

AdSize adSize = new AdSize(300, 50);

科特林

val adSize = AdSize(300, 50)

視頻廣告的硬件加速

為了使視頻廣告在您的橫幅廣告視圖中成功展示,必須啟用硬件加速

默認情況下啟用硬件加速,但某些應用程序可能會選擇禁用它。如果這適用於您的應用,我們建議為使用廣告的 Activity 類啟用硬件加速。

啟用硬件加速

如果您的應用在全局開啟硬件加速的情況下無法正常運行,您也可以針對個別活動對其進行控制。要啟用或禁用硬件加速,您可以對AndroidManifest.xml中的<application><activity>元素使用android:hardwareAccelerated屬性。以下示例為整個應用啟用硬件加速,但為一項活動禁用它:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

有關控制硬件加速的選項的更多信息,請參閱硬件加速指南。請注意,如果 Activity 被禁用,則無法為單個廣告視圖啟用硬件加速,因此 Activity 本身必須啟用硬件加速。

其他資源

GitHub 上的示例

移動廣告車庫視頻教程

成功的故事