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

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

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

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 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 bắt đầu chạy ứng dụng.

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

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

Bước đầu tiên để hiển thị biểu ngữ với Quảng cáo trên thiết bị di động của Google là tạo và định cấu hình vị trí đặt quảng cáo. Bạn có thể chọn vị trí đặt quảng cáo của định dạng Biểu ngữ, Quảng cáo xen kẽ hoặc Quảng cáo có tặng thưởng trong mục Thành phầ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ạ được thiết lập và sẵn sàng để sử dụng.

Để thêm một quy trình đặt quảng cáo mới, hãy nhấp vào nút Thêm vị trí đặt quảng cáo mới ở cuối danh sách. Bạn có thể định cấu hình vị trí đặt quảng cáo từ 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
Quảng cáo biểu ngữ, Quảng cáo có tặng thưởng, Quảng cáo 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ữ 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, biểu ngữ sẽ vẫn tồn tại trên màn hình bất kể cảnh có thay đổi gì (cùng hành vi như DontDestroyOnLoad).
Đã bật tính năng tự động tải
Khi được đánh dấu chọn, quảng cáo sẽ tự động tải khi một 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 AdAltID vào cảnh

Bạn có thể thêm AdRTB cho các định dạng Biểu ngữ, Quảng cáo xen kẽ hoặc Có tặng thưởng vào cảnh của mình bằng cách sử dụng RTB > 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 AdRTB vào cảnh, bạn sẽ thấy một GPC đại diện cho quảng cáo trong chế độ xem Hệ thống 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 AppCompat. Ảnh chụp màn hình sau đây cho thấy ví dụ về một Adnadzor có tên là Quảng cáo biểu ngữ.

Chế độ cài đặt AdANR

Bạn có thể định cấu hình AdRTB trong cảnh của mình từ chế độ xem Trình kiểm tra trong phần 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 từ danh sách thả xuống gồm các vị trí đã định cấu hình. Danh sách này sẽ chỉ chứa các đơn vị quảng cáo thuộc định dạng phù hợp. Ví dụ: đối với các đối tượng trò chơi quảng cáo biểu ngữ, trình đơn thả xuống sẽ chỉ hiển thị các 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 của biểu ngữ mà bạn muốn sử dụng.
    • Biểu ngữ thích ứng cố định cung cấp thêm một số tuỳ chọn:
      • 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 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 chứa hàm trên vào bất kỳ mắt nào trong cảnh.

  3. Nhấp vào nút +, sau đó kéo và thả AppCompat 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 với lệnh gọi lại quảng cáo. Đối với lệnh gọi lại quảng cáo có 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 AdANR từ tập lệnh

Nhận bản sao AdNone từ tập lệnh

Tất cả đối tượng AdGameObject đều có phương thức LoadAd() tiện lợi. Thao tác này sẽ tải quảng cáo có một AdRequest thuần tuý và 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) theo yêu cầu quảng cáo được thiết lập của riêng mình.

Để có được bản sao của AdExtension, 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 lợi.

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 lợi.

Đượ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 lợi.

Ví dụ: bạn có thể lấy thực thể của BannerAdGameObject và tải thực thể đó 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ó BannerAdGameObject tên là BannerAd, bạn có thể nhận bản sao của mã đó như sau:

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

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

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

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à 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 AdGPC.

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 bạn đã khởi chạy SDK như sau. Lưu ý rằng tính năng Tự động tải trong Adnadzor 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 là ví dụ về cách 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ật tính năng Tự động tải ở vị trí đặt quảng cáo, nên bạn không cần yêu cầu quảng cáo một cách rõ ràng. Khi cảnh thay đổi, một 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 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 vị trí đặ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 của 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 quy trình đặt quảng cáo.

Thêm Button GameObject (được đặt tên là Nút 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ó 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 thử nghiệm của AdMob 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ừ mục 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 userId mà bạn đã thêm ở bước trước vào trường None (Object) (Không có (Đối tượng). Chọn một hàm cần gọi trong trình đơn thả xuống. Nhấp vào No Function > userId > SetActive(bool) (Không có hàm > RTB > SetActive(bool))), sau đó 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 chi tiết, hãy tham khảo mục này.

Tiếp theo, hãy tạo nút để hiển thị quảng cáo có tặng thưởng khi người dùng nhấp vào. 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ả Tiếp thị lại 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");
        });
    }
}

Sau 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 quảng cáo có tặng thưởng cho RewardedAdANR

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

Tạo tập lệnh mới và xác định 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);
    }
    ...
}

Đính kèm tập lệnh RewardedTestScript vào mọi DDA (ngoại trừ DDA Quy trình đặt quảng cáo) trong cảnh. Trong ví dụ này, video được đính kèm vào GPC cho máy ảnh chính.

Thêm RewardedAdGameObject vào cảnh. Sau đó, 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 + 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ả LiveData của máy ảnh chính mà bạn đã thêm trong bước trước vào trường None (Object) (Không có (Đối tượng). Chọn một hàm sẽ được gọi từ trình đơn thả xuống. Nhấp vào Không có hàm nào > RewardsTestScript > OnUserPaymentedReward.

Sau 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.