Vị trí đặt quảng cáo

Hướng dẫn này sẽ cho bạn biết cách sử dụng tính năng Vị trí đặt quảng cáo của trình bổ trợ Google Mobile Ads cho Unity để tạo và hiển thị quảng cáo cho ứng dụng của mình.

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

Khởi chạy SDK Quảng cáo của Google trên thiết bị di động

Trước khi tải quảng cáo, hãy khởi chạy SDK quảng cáo trên thiết bị di động của Google bằng cách gọi MobileAds.Initialize(), với lệnh gọi lại Action<InitializationStatus>. Bạn chỉ cần thực hiện việc này một lần, tốt nhất là khi khởi chạy ứng dụng.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize Google Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

Tạo vị trí đặt quảng cáo

Bước đầu tiên trong việc hiển thị biểu ngữ bằng Quảng cáo trên thiết bị di động của Google là tạo và định cấu hình một vị trí đặt quảng cáo. Bạn có thể chọn một vị trí đặt quảng cáo cho định dạng Quảng cáo biểu ngữ, Quảng cáo xen kẽ hoặc Quảng cáo có tặng thưởng trong Tài sản > Quảng cáo trên thiết bị di động của Google > Vị trí đặt quảng cáo trong Trình chỉnh sửa Unity. Sau đó, 3 vị trí đặt quảng cáo minh hoạ sẽ được thiết lập và sẵn sàng để sử dụng.

Để thêm một Vị trí đặt quảng cáo mới, hãy nhấp vào nút Thêm vị trí mới ở cuối danh sách. Bạn có thể định cấu hình vị trí đặt quảng cáo trong chế độ xem Trình kiểm tra.

Cấu hình vị trí đặt quảng cáo

Mỗi vị trí đều có các thuộc tính sau:

Tên Vị trí
Tên của vị trí. Dùng để xác định các vị trí khi thiết lập quảng cáo trong một cảnh.
Định dạng quảng cáo
Biểu ngữ, Có tặng thưởng, Xen kẽ. Loại quảng cáo.
Mã đơn vị quảng cáo
Cung cấp mã đơn vị quảng cáo biểu ngữ của bạn cho Android và iOS. Bạn cần cung cấp ít nhất một mã đơn vị quảng cáo.
Liên tục qua các cảnh
Khi được đánh dấu chọn, biểu ngữ sẽ vẫn hiển thị trên màn hình bất kể cảnh nào thay đổi (có cùng hành vi như DontDestroyOnLoad).
Đã bật tính năng tự động tải
Khi được đánh dấu chọn, một quảng cáo sẽ tự động tải khi cảnh liên kết với vị trí đặt quảng cáo được tải.

Ảnh chụp màn hình sau đây cho thấy một ví dụ về quy trình đặt quảng cáo có tên Biểu ngữ tuyệt vời của tôi.

Thêm AdGameObject vào cảnh

Bạn có thể thêm AdGameObject cho định dạng Biểu ngữ, Xen kẽ hoặc Có tặng thưởng vào cảnh của mình bằng cách sử dụng GameObject > Quảng cáo trên thiết bị di động của Google trong Trình chỉnh sửa Unity. Chọn định dạng để thêm vị trí vào cảnh đang hoạt động.

Sau khi thêm một AdGameObject vào cảnh, bạn sẽ thấy GameObject đại diện cho quảng cáo trong chế độ xem Phân cấp của Trình chỉnh sửa Unity.

Bạn có thể thay đổi tên của vị trí bằng cách thay đổi tên của chính GameObject đó. Ảnh chụp màn hình sau đây cho thấy ví dụ về một AdGameObject có tên là Quảng cáo biểu ngữ.

Chế độ cài đặt cho AdGameObject

Bạn có thể định cấu hình AdGameObject trong cảnh của mình từ chế độ xem Công cụ kiểm tra trong các chế độ cài đặt cho thành phần Đối tượng trò chơi quảng cáo (Tập lệnh).

Vị trí đặt Quảng cáo

Chọn vị trí đặt quảng cáo trong danh sách thả xuống gồm các vị trí đã được định cấu hình. Danh sách này sẽ chỉ chứa các đơn vị quảng cáo thuộc đúng định dạng. Ví dụ: đối với đối tượng trò chơi quảng cáo biểu ngữ, trình đơn thả xuống sẽ chỉ hiển thị những vị trí đặt quảng cáo biểu ngữ đã được định cấu hình.

Cấu hình BannerAdGameObject (chỉ quảng cáo biểu ngữ)

  • Kích thước – Chọn kích thước biểu ngữ mà bạn muốn sử dụng.
    • Biểu ngữ thích ứng cố định cung cấp một số lựa chọn khác:
      • Hướng – Chọn hướng thiết bị được dùng tính chiều cao quảng cáo.
      • Sử dụng chiều rộng toàn màn hình – Khi được đánh dấu chọn, biểu ngữ sẽ chiếm toàn bộ chiều rộng màn hình. Bạn có thể điều chỉnh % chiều rộng của màn hình (50~99%) nếu bỏ đánh dấu tuỳ chọn Sử dụng chiều rộng toàn màn hình.
    • Tuỳ chỉnh cho phép bạn cung cấp chiều rộng và chiều cao của biểu ngữ.
  • Vị trí quảng cáo – Chọn vị trí mà bạn sẽ đặt biểu ngữ.

Lệnh gọi lại

Bạn có thể triển khai các chức năng tương ứng với lệnh gọi lại quảng cáo. Ví dụ: nếu bạn muốn xử lý khi quảng cáo biểu ngữ không tải được, hãy làm như sau:

  1. Tạo một hàm tương thích với lệnh gọi lại quảng cáo.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. Đính kèm tập lệnh có chứa hàm trên vào bất kỳ GameObject nào trong cảnh.

  3. Nhấp vào nút +, sau đó kéo và thả GameObject mà bạn đã đính kèm tập lệnh vào.

  4. Chọn hàm mà bạn muốn liên kết đến lệnh gọi lại quảng cáo. Đối với lệnh gọi lại quảng cáo được tạo thông số, hãy chọn hàm để chấp nhận biến động để bạn có thể nhận giá trị thông số từ SDK.

Sử dụng AdGameObject từ tập lệnh

Nhận thực thể AdGameObject từ tập lệnh

Tất cả các đối tượng AdGameObject đều có phương thức LoadAd() tiện dụng. Phương thức này sẽ tải một quảng cáo có AdRequest đơn thuần, không có mục tiêu. Để áp dụng tiêu chí nhắm mục tiêu, bạn nên sử dụng LoadAd(AdRequest adRequest) bằng cách sử dụng yêu cầu quảng cáo được định cấu hình của riêng mình.

Để có được thực thể của AdGameObject, hãy sử dụng phương thức sau cho mỗi định dạng:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

Đối tượng BannerAdGameObject được trả về cũng có các phương thức Hide()Show() tiện dụng.

Quảng cáo xen kẽ

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

Đối tượng InterstitialAdGameObject được trả về có một phương thức ShowIfLoaded() tiện dụng.

Được thưởng

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

Đối tượng RewardedAdGameObject được trả về có một phương thức ShowIfLoaded() tiện dụng.

Ví dụ: bạn có thể nhận một phiên bản của BannerAdGameObject và tải phiên bản đó như sau:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

Nếu có một BannerAdGameObject có tên là BannerAd, bạn có thể nhận bản sao của đối tượng này như sau:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

Truy cập đối tượng quảng cáo cơ bản trong AdGameObject

Các đoạn mã này minh hoạ cách truy cập đối tượng quảng cáo cơ bản được liên kết với AdGameObject.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

Quảng cáo xen kẽ

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

Được thưởng

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

Ví dụ

Hiển thị quảng cáo xen kẽ

Dưới đây là một ví dụ về cách định cấu hình trò chơi để tải và hiển thị quảng cáo xen kẽ bằng cách sử dụng AdGameObject.

Thêm InterstitialAdGameObject vào cảnh và bật tính năng Tự động tải để quảng cáo được tải tự động khi cảnh tải.

Tiếp theo, hãy đảm bảo rằng bạn đã khởi chạy SDK bằng cách làm như sau. Lưu ý rằng tính năng Tự động tải trong AdGameObject sẽ không hoạt động nếu bạn quên khởi chạy SDK.

Sau đó, hãy hiển thị quảng cáo xen kẽ giữa các lần chuyển đổi màn hình bằng cách gọi hàm InterstitialAdGameObject.ShowIfLoaded(). Đoạn mã sau đây cho thấy ví dụ về việc hiển thị quảng cáo xen kẽ giữa quá trình chuyển đổi cảnh.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

Vì bạn đã bật tính năng Tự động tải trong quy trình đặt quảng cáo, nên bạn không cần phải yêu cầu quảng cáo một cách rõ ràng. Khi cảnh thay đổi, quảng cáo xen kẽ sẽ xuất hiện nếu đã sẵn sàng.

Nếu bạn muốn yêu cầu một quảng cáo theo cách thủ công, hãy tắt tính năng Tự động tải trong công cụ kiểm tra quy trình đặt quảng cáo và gọi hàm InterstitialAdGameObject.LoadAd(). Đoạn mã sau đây cho biết cách yêu cầu quảng cáo theo cách thủ công.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

Xử lý trạng thái nút "xem quảng cáo có tặng thưởng"

Dưới đây là ví dụ về cách bật nút "xem quảng cáo có tặng thưởng" bằng cách sử dụng vị trí đặt quảng cáo.

Thêm một Button GameObject (được đặt tên là Button trong ví dụ này) vào cảnh, cảnh này sẽ được dùng để hiển thị quảng cáo có tặng thưởng. Chúng tôi sẽ chỉ cung cấp nút này khi có sẵn quảng cáo có tặng thưởng.

Trong phương thức Start(), hãy thay đổi trạng thái hoạt động của Nút thành false. Thao tác này sẽ làm cho nút biến mất khỏi cảnh.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

Thêm RewardedAdGameObject vào cảnh và chọn vị trí đặt quảng cáo Quảng cáo có tặng thưởng AdMob (thử nghiệm) trong trình đơn thả xuống.

Trong mục Lệnh gọi lại trong công cụ kiểm tra RewardedAdGameObject, hãy nhấp vào nút + từ On Ad Loaded() để bật hàm được gọi khi quảng cáo có tặng thưởng được tải.

Kéo và thả Button GameObject mà bạn đã thêm vào trong bước trước đó vào trường Không có (Đối tượng). Chọn một hàm được gọi từ danh sách thả xuống. Nhấp vào No Function > GameObject > SetActive(bool), rồi nhấp vào hộp đánh dấu để gửi true dưới dạng một thông số (gọi SetActive(true)).

Trong mục Lệnh gọi lại này, bạn cũng có thể liên kết một sự kiện sẽ được gọi khi sự kiện RewardedAd.OnUserEarnedReward được kích hoạt. Để biết thêm thông tin, hãy tham khảo mục này.

Tiếp theo, hãy tạo nút để quảng cáo có tặng thưởng hiển thị khi được nhấp. Từ mục Lệnh gọi lại On Click() trong công cụ kiểm tra nút, hãy nhấp vào nút +, rồi kéo và thả GameObject quy trình đặt quảng cáo có tặng thưởng (có tên là Quảng cáo có tặng thưởng trong ví dụ này) vào trường Không có (Đối tượng).

Sau đó, hãy đính kèm hàm RewardedAdGameObject.ShowIfLoaded() vào lệnh gọi lại On Click() của nút.

Cuối cùng, đừng quên khởi chạy SDK. Đoạn mã sau đây là mã hoàn chỉnh cho cảnh được dùng trong ví dụ này:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

Khi chạy dự án, bạn sẽ thấy nút hiển thị trên cảnh khi quảng cáo có tặng thưởng được tải và sẵn sàng hiển thị.

Định cấu hình lệnh gọi lại phần thưởng cho RewardedAdGameObject

Dưới đây là ví dụ về cách định cấu hình lệnh gọi lại quảng cáo có tặng thưởng cho quy trình đặt quảng cáo có tặng thưởng để bạn có thể tặng thưởng cho người dùng khi hàm callback được gọi.

Tạo một tập lệnh mới và xác định một hàm chấp nhận Reward làm tham số như sau.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

Gắn tập lệnh RewardedTestScript vào mọi GameObject (ngoại trừ GameObject quy trình đặt quảng cáo) trong cảnh. Trong ví dụ này, video được gắn vào GameObject Máy ảnh chính.

Thêm RewardedAdGameObject vào cảnh. Sau đó, trong mục Lệnh gọi lại trong trình kiểm tra RewardedAdGameObject, hãy nhấp vào nút + trên Phần thưởng do người dùng kiếm được (Phần thưởng) để bật hàm được gọi khi phần thưởng được cấp cho người dùng.

Kéo và thả GameObject máy ảnh chính mà bạn đã thêm vào trong bước trước đó vào trường Không có (Đối tượng). Chọn một hàm được gọi từ trình đơn thả xuống. Nhấp vào Không có hàm nào > RewardedTestScript > OnUserEarnedReward.

Khi bạn chạy dự án và xem quảng cáo có tặng thưởng, RewardedTestScript.OnUserEarnedReward() sẽ được gọi khi bạn được thưởng vì đã tương tác với quảng cáo.