Quảng cáo biểu ngữ

Quảng cáo biểu ngữ là quảng cáo văn bản hoặc quảng cáo hình ảnh dạng hình chữ nhật chiếm một vị trí trên màn hình. Những quảng cáo này nằm trên màn hình trong khi người dùng tương tác với ứng dụng và có thể tự động làm mới sau một khoảng thời gian nhất định. Nếu bạn mới sử dụng quảng cáo trên thiết bị di động, thì đây là loại quảng cáo rất phù hợp để bắt đầu. Nghiên cứu điển hình.

Tài liệu hướng dẫn này sẽ trình bày cách tích hợp quảng cáo biểu ngữ từ AdMob vào ứng dụng Unity. Ngoài các đoạn mã và thông tin hướng dẫn, bài viết này còn cung cấp thông tin về về việc xác định kích thước biểu ngữ sao cho phù hợp và các đường liên kết đến các tài nguyên khác.

Điều kiện tiên quyết

Xem hết hướng dẫn Bắt đầu sử dụng. Bạn phải nhập trước plugin Unity quảng cáo trên thiết bị di động của Google vào ứng dụng Unity.

Tạo Chế độ xem biểu ngữ

Bước đầu tiên để hiển thị biểu ngữ là tạo đối tượng BannerView trong tập lệnh C# được đính kèm vào GameObject.

using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    ...
    public void Start()
    {
        #if UNITY_ANDROID
            string appId = "ca-app-pub-3940256099942544~3347511713";
        #elif UNITY_IPHONE
            string appId = "ca-app-pub-3940256099942544~1458002511";
        #else
            string appId = "unexpected_platform";
        #endif

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(appId);

        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
    }
}

Hàm tạo cho BannerView có các thông số sau:

  • adUnitId — Mã đơn vị quảng cáo AdMob mà từ đó BannerView sẽ tải quảng cáo.
  • AdSize – Kích thước quảng cáo AdMob mà bạn muốn sử dụng (xem mục Kích thước biểu ngữ để biết thông tin chi tiết).
  • AdPosition – Vị trí mà bạn nên đặt quảng cáo biểu ngữ. AdPosition liệt kê các giá trị vị trí quảng cáo hợp lệ.

Điều quan trọng là bạn cần phải lưu ý cách sử dụng các đơn vị quảng cáo khác nhau, tùy thuộc vào nền tảng. Bạn sẽ cần sử dụng đơn vị quảng cáo dành cho iOS để đưa ra các yêu cầu quảng cáo trên iOS và sử dụng đơn vị quảng cáo dành cho Android để đưa ra yêu cầu trên Android.

(Không bắt buộc) Vị trí quảng cáo tùy chỉnh

Để kiểm soát tốt hơn vị trí đặt BannerView trên màn hình so với khả năng kiểm soát do giá trị AdPosition cung cấp, hãy sử dụng hàm tạo có tọa độ x và y làm thông số:

// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);

Góc trên cùng bên trái của BannerView sẽ được định vị theo các giá trị x và y đã chuyển tới hàm tạo, còn gốc tọa độ sẽ nằm ở phía trên cùng bên trái của màn hình.

(Không bắt buộc) Kích thước quảng cáo tùy chỉnh

Ngoài việc sử dụng hằng số Kích thước quảng cáo, bạn cũng có thể chỉ định một kích thước tùy chỉnh cho quảng cáo của mình:

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

Luôn kiểm tra bằng quảng cáo thử nghiệm

Mã mẫu ở trên chứa một mã đơn vị quảng cáo và bạn có thể yêu cầu quảng cáo bằng mã đơn vị quảng cáo đó. Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm thay vì quảng cáo thực tế cho mọi yêu cầu, đó là lý do mã này rất an toàn khi sử dụng.

Tuy nhiên, sau khi đăng ký một ứng dụng trong giao diện người dùng AdMob và tạo các mã đơn vị quảng cáo riêng để sử dụng trong ứng dụng, bạn cần định cấu hình thiết bị của mình làm thiết bị thử nghiệm một cách rõ ràng trong quá trình phát triển. Điều này cực kỳ quan trọng. Việc kiểm tra bằng quảng cáo thực (ngay cả khi bạn không bao giờ nhấn vào quảng cáo) là hành vi vi phạm chính sách của AdMob và có thể khiến tài khoản của bạn bị tạm ngưng. Hãy đọc bài viết về Quảng cáo thử nghiệm để biết thông tin về cách đảm bảo bạn luôn sử dụng quảng cáo thử nghiệm khi đang phát triển.

Tải quảng cáo

Sau khi bạn tạo BannerView, bước tiếp theo là tải quảng cáo. Bạn thực hiện việc này bằng cách sử dụng phương thức loadAd() trong lớp BannerView. Phương thức này sử dụng đối số AdRequest, giúp lưu giữ thông tin thời gian chạy (chẳng hạn như thông tin về tiêu chí nhắm mục tiêu) về một yêu cầu quảng cáo.

Dưới đây là ví dụ cho thấy cách tải một quảng cáo:

...
    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }
...

Vậy là xong! Ứng dụng của bạn hiện đã sẵn sàng để hiển thị quảng cáo biểu ngữ từ AdMob.

Sự kiện quảng cáo

Để tùy chỉnh thêm hành vi của quảng cáo, bạn có thể dựa trên một số sự kiện trong vòng đời của quảng cáo: tải, mở, đóng và các sự kiện khác. Hãy theo dõi những sự kiện này bằng cách đăng ký ủy quyền cho EventHandler thích hợp, như hiển thị dưới đây.

...
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
        // Called when an ad request failed to load.
        this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        this.bannerView.OnAdOpening += this.HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        this.bannerView.OnAdClosed += this.HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        this.bannerView.LoadAd(request);
    }

    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
    }

    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                            + args.Message);
    }

    public void HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleOnAdLeavingApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeavingApplication event received");
    }
}

Sự kiện OnAdFailedToLoad chứa các đối số sự kiện đặc biệt. Sự kiện này chuyển một bản sao của HandleAdFailedToLoadEventArgsMessage mô tả lỗi:

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  MonoBehaviour.print("Banner failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
Sự kiện quảng cáoNội dung mô tả
OnAdLoaded Hệ thống thực thi sự kiện OnAdLoaded khi quảng cáo đã tải xong.
OnAdFailedToLoad Hệ thống gọi sự kiện OnAdFailedToLoad khi xảy ra lỗi không thể tải quảng cáo. Thông số Message mô tả loại lỗi đã xảy ra.
OnAdOpening Phương thức này được gọi khi người dùng nhấn vào một quảng cáo. Nếu bạn đang sử dụng một gói phân tích để theo dõi các lần nhấp qua thì đây là sự kiện rất phù hợp để ghi lại.
OnAdClosed Sau khi người dùng xem URL đích của quảng cáo và quay lại ứng dụng, phương thức này sẽ được gọi. Ứng dụng của bạn có thể sử dụng phương thức này để tiếp tục lại các hoạt động bị tạm ngưng hoặc thực hiện bất kỳ công việc nào khác cần thiết để ứng dụng đó có thể sẵn sàng thực hiện hoạt động tương tác.
OnAdLeavingApplication Phương thức này được gọi sau onAdOpened, khi thao tác nhấp của người dùng mở một ứng dụng khác (chẳng hạn như Cửa hàng Google Play) và chuyển ứng dụng hiện tại sang chạy ở chế độ nền

Dưới đây là bảng liệt kê các kích thước biểu ngữ chuẩn.

Kích thước đo bằng dp (RxC) Nội dung mô tả Khả năng sử dụng Hằng số AdSize
320x50 Biểu ngữ chuẩn Điện thoại và máy tính bảng BANNER
320x100 Biểu ngữ lớn Điện thoại và máy tính bảng LARGE_BANNER
300x250 Hình chữ nhật trung bình IAB Điện thoại và máy tính bảng MEDIUM_RECTANGLE
468x60 Biểu ngữ kích thước đầy đủ IAB Máy tính bảng FULL_BANNER
728x90 Hình chữ nhật dài IAB Máy tính bảng LEADERBOARD
Chiều rộng đã cho x Chiều cao thích ứng Biểu ngữ thích ứng Điện thoại và máy tính bảng Không áp dụng
Chiều rộng màn hình x 32|50|90 Biểu ngữ thông minh Điện thoại và máy tính bảng SMART_BANNER
Tìm hiểu thêm về Biểu ngữ thích ứng. Định dạng này dự kiến sẽ thay thế Biểu ngữ thông minh.

Dọn dẹp quảng cáo biểu ngữ

Khi bạn đã tạo xong BannerView, hãy nhớ gọi phương thức Destroy() trước khi xóa thông tin tham chiếu đến đối tượng đó:

bannerView.Destroy();

Điều này thông báo cho plugin rằng đối tượng không còn được sử dụng và bộ nhớ mà đối tượng đó chiếm có thể được thu hồi. Nếu không gọi phương thức này, bộ nhớ sẽ bị rò rỉ.

Tài nguyên khác

Mẫu

Câu chuyện thành công