ตำแหน่งโฆษณา

คู่มือนี้จะแสดงวิธีใช้ฟีเจอร์ตำแหน่งโฆษณาของปลั๊กอิน Google Mobile Ads Unity เพื่อสร้างและแสดงโฆษณาสำหรับแอป

ข้อกำหนดเบื้องต้น

เริ่มต้น Google Mobile Ads Unity Plugin

ก่อนโหลดโฆษณา ให้เริ่มต้น Google Mobile Ads Unity Plugin โดยเรียกใช้ MobileAds.Initialize() ด้วย Callback Action<InitializationStatus> คุณต้องทำขั้นตอนนี้เพียงครั้งเดียว ซึ่งควรทำเมื่อเปิดแอป

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

การสร้างตำแหน่งโฆษณา

ขั้นตอนแรกในการแสดงแบนเนอร์ด้วย Google Mobile Ads คือการสร้างและกำหนดค่าตำแหน่งโฆษณา คุณสามารถเลือกตำแหน่งโฆษณารูปแบบแบนเนอร์ โฆษณาคั่นระหว่างหน้า หรือโฆษณาที่มีการให้รางวัลได้จากAssets > Google Mobile Ads > ตำแหน่งโฆษณา ใน Unity Editor จากนั้นตั้งค่าตำแหน่งโฆษณาสาธิต 3 รายการให้พร้อมใช้งาน

หากต้องการเพิ่มตำแหน่งโฆษณาใหม่ ให้คลิกปุ่มเพิ่มตำแหน่งใหม่ ที่ท้ายรายการ คุณสามารถกำหนดค่าตำแหน่งโฆษณาได้จากมุมมอง Inspector

การกำหนดค่าตำแหน่งโฆษณา

ตำแหน่งแต่ละตำแหน่งมีพร็อพเพอร์ตี้ต่อไปนี้

ชื่อตำแหน่ง
ชื่อของตำแหน่ง ใช้เพื่อระบุตำแหน่งเมื่อตั้งค่าโฆษณาในฉาก
รูปแบบโฆษณา
แบนเนอร์ โฆษณาที่มีการให้รางวัล โฆษณาคั่นระหว่างหน้า ประเภทโฆษณา
รหัสหน่วยโฆษณา
ระบุรหัสหน่วยโฆษณาแบนเนอร์สำหรับ Android และ iOS คุณต้องระบุรหัสหน่วยโฆษณาอย่างน้อย 1 รายการ
คงอยู่ตลอดทั้งฉาก
เมื่อเลือก แบนเนอร์จะคงอยู่บนหน้าจอไม่ว่าฉากจะเปลี่ยนไปอย่างไร (ลักษณะการทำงานเหมือนกับ DontDestroyOnLoad)
เปิดใช้การโหลดอัตโนมัติ
เมื่อเลือก ระบบจะโหลดโฆษณาโดยอัตโนมัติเมื่อโหลดฉากที่เชื่อมโยงกับตำแหน่งโฆษณา

ภาพหน้าจอต่อไปนี้แสดงตัวอย่างตำแหน่งโฆษณาชื่อ My Awesome Banner

การเพิ่ม AdGameObject ลงในฉาก

คุณสามารถเพิ่ม AdGameObject สำหรับรูปแบบแบนเนอร์ โฆษณาคั่นระหว่างหน้า หรือโฆษณาที่มีการให้รางวัลลงในฉากได้โดยใช้ GameObject > Google Mobile Ads ใน Unity Editor เลือกรูปแบบเพื่อเพิ่มตำแหน่งลงในฉากที่ใช้งานอยู่

เมื่อเพิ่ม AdGameObject ลงในฉากแล้ว คุณจะเห็น GameObject ที่แสดงโฆษณาในมุมมอง Hierarchy ของ Unity Editor

คุณสามารถเปลี่ยนชื่อตำแหน่งได้โดยเปลี่ยนชื่อของ GameObject เอง ภาพหน้าจอต่อไปนี้แสดงตัวอย่าง AdGameObject ชื่อ Banner Ad

การตั้งค่า AdGameObject

คุณสามารถกำหนดค่า AdGameObject ในฉากได้จากมุมมอง Inspector ในการตั้งค่าสำหรับคอมโพเนนต์ Ad Game Object (Script)

ตำแหน่งโฆษณา

เลือกตำแหน่งโฆษณาจากรายการแบบเลื่อนลงของตำแหน่งที่กำหนดค่าไว้ รายการจะมีเฉพาะหน่วยโฆษณาสำหรับรูปแบบที่ถูกต้อง เช่น สำหรับออบเจ็กต์เกมโฆษณาแบนเนอร์ รายการแบบเลื่อนลงจะแสดงเฉพาะตำแหน่งโฆษณาแบนเนอร์ที่กำหนดค่าไว้

การกำหนดค่า BannerAdGameObject (แบนเนอร์เท่านั้น)

  • ขนาด - เลือกขนาดแบนเนอร์ที่ต้องการใช้
    • แบนเนอร์แบบปรับขนาดได้แบบยึดพื้นมีตัวเลือกเพิ่มเติมดังนี้
      • การวางแนว - เลือกการวางแนวของอุปกรณ์ที่ใช้คำนวณความสูงของโฆษณา
      • ใช้ความกว้างเต็มหน้าจอ - เมื่อเลือก แบนเนอร์จะใช้ ความกว้างเต็มหน้าจอ คุณสามารถปรับความกว้างเป็น % ของหน้าจอ (50~99%) ได้หากยกเลิกการเลือกตัวเลือกใช้ความกว้างเต็มหน้าจอ
    • กำหนดเองช่วยให้คุณระบุความกว้างและความสูงของแบนเนอร์ได้
  • ตำแหน่งโฆษณา - เลือกตำแหน่งที่จะวางแบนเนอร์

Callback

คุณสามารถใช้ฟังก์ชันที่สอดคล้องกับ Callback โฆษณาได้ เช่น หากต้องการจัดการเมื่อโฆษณาแบนเนอร์โหลดไม่สำเร็จ ให้ทำดังนี้

  1. สร้างฟังก์ชันที่เข้ากันได้กับ Callback โฆษณา

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. แนบสคริปต์ที่มีฟังก์ชันข้างต้นกับ GameObject ใดก็ได้ในฉาก

  3. คลิกปุ่ม + แล้วลากและวาง GameObject ที่คุณแนบสคริปต์ไว้

  4. เลือกฟังก์ชันที่ต้องการลิงก์กับ Callback โฆษณา สำหรับ Callback โฆษณาที่มีพารามิเตอร์ ให้เลือกฟังก์ชันเพื่อยอมรับตัวแปรแบบไดนามิกเพื่อให้คุณได้รับค่าพารามิเตอร์จาก SDK

ใช้ AdGameObject จากสคริปต์

รับอินสแตนซ์ AdGameObject จากสคริปต์

ออบเจ็กต์ AdGameObject ทั้งหมดมีเมธอด LoadAd() ที่ใช้งานง่าย ซึ่งจะโหลดโฆษณาด้วย AdRequest ธรรมดาที่ไม่ได้กำหนดเป้าหมาย หากต้องการใช้การกำหนดเป้าหมาย คุณควรใช้ LoadAd(AdRequest adRequest) โดยใช้คำขอโฆษณาที่กำหนดค่าไว้เอง

หากต้องการรับอินสแตนซ์ของ AdGameObject ให้ใช้วิธีต่อไปนี้สำหรับแต่ละรูปแบบ

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

ออบเจ็กต์ BannerAdGameObject ที่แสดงผลยังมีเมธอด Hide() และ Show() ที่ใช้งานง่ายด้วย

โฆษณาคั่นระหว่างหน้า

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

ออบเจ็กต์ InterstitialAdGameObject ที่แสดงผลมีเมธอด ShowIfLoaded() ที่ใช้งานง่าย

โฆษณาที่มีการให้รางวัล

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

ออบเจ็กต์ RewardedAdGameObject ที่แสดงผลมีเมธอด ShowIfLoaded() ที่ใช้งานง่าย

ตัวอย่างเช่น คุณสามารถรับอินสแตนซ์ของ BannerAdGameObject และโหลดได้ดังนี้

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();
        ...
    }
    ...
}

หากมี BannerAdGameObject ชื่อ BannerAd คุณจะรับอินสแตนซ์ของ มันได้ดังนี้

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

เข้าถึงออบเจ็กต์โฆษณาพื้นฐานใน AdGameObject

ข้อมูลโค้ดเหล่านี้แสดงวิธีเข้าถึงออบเจ็กต์โฆษณาพื้นฐานที่เชื่อมโยงกับ AdGameObject

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

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

โฆษณาคั่นระหว่างหน้า

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

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

โฆษณาที่มีการให้รางวัล

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

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

ตัวอย่าง

แสดงโฆษณาคั่นระหว่างหน้า

ต่อไปนี้เป็นตัวอย่างวิธีกำหนดค่าเกมให้โหลดและแสดงโฆษณาคั่นระหว่างหน้าโดยใช้ AdGameObject

เพิ่ม InterstitialAdGameObject ลงในฉากและเปิดฟีเจอร์เปิดใช้การโหลดอัตโนมัติ เพื่อให้ระบบโหลดโฆษณาโดยอัตโนมัติเมื่อโหลดฉาก

จากนั้นตรวจสอบว่าคุณได้เริ่มต้น SDK โดยใช้โค้ดต่อไปนี้ โปรดทราบว่าฟีเจอร์โหลดอัตโนมัติ ใน AdGameObject จะไม่ทำงานหากคุณลืมเริ่มต้น SDK

จากนั้นแสดงโฆษณาคั่นระหว่างหน้าระหว่างการเปลี่ยนหน้าจอโดยเรียกใช้ฟังก์ชัน InterstitialAdGameObject.ShowIfLoaded() โค้ดต่อไปนี้แสดงตัวอย่างการแสดงโฆษณาคั่นระหว่างหน้าระหว่างการเปลี่ยนฉาก

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");
    }
}

เนื่องจากคุณได้เปิดใช้ฟีเจอร์โหลดอัตโนมัติ ในตำแหน่งโฆษณาแล้ว คุณจึงไม่จำเป็นต้องขอโฆษณาอย่างชัดแจ้ง เมื่อฉากเปลี่ยนไป โฆษณาคั่นระหว่างหน้าจะปรากฏขึ้นหากพร้อม

หากต้องการขอโฆษณาด้วยตนเอง ให้ปิดใช้ฟีเจอร์โหลดอัตโนมัติ จาก Inspector ของตำแหน่งโฆษณา แล้วเรียกใช้ฟังก์ชัน InterstitialAdGameObject.LoadAd() แทน ข้อมูลโค้ดต่อไปนี้แสดงวิธีขอโฆษณาด้วยตนเอง

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();
        });
    }
    ...
}

จัดการสถานะปุ่ม "ดูโฆษณาที่มีการให้รางวัล"

ต่อไปนี้เป็นตัวอย่างวิธีเปิดใช้ปุ่ม "ดูโฆษณาที่มีการให้รางวัล" โดยใช้ตำแหน่งโฆษณา

เพิ่ม GameObject ของปุ่ม (ชื่อ Button ในตัวอย่างนี้) ลงในฉาก ซึ่งจะใช้เพื่อแสดงโฆษณาที่มีการให้รางวัล เราจะทำให้ปุ่มนี้พร้อมใช้งานเมื่อมีโฆษณาที่มีการให้รางวัลเท่านั้น

ในเมธอด Start() ให้เปลี่ยนสถานะใช้งานของปุ่มเป็น false ซึ่งจะทำให้ปุ่มหายไปจากฉาก

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

เพิ่ม RewardedAdGameObject ลงในฉาก แล้วเลือกตำแหน่งโฆษณา AdMob Demo Rewarded Ad จากรายการแบบเลื่อนลง

ในส่วน Callbacks ใน Inspector ของ RewardedAdGameObject ให้คลิกปุ่ม + จาก On Ad Loaded() เพื่อเปิดใช้ฟังก์ชันที่จะเรียกเมื่อโหลดโฆษณาที่มีการให้รางวัล

ลากและวาง GameObject ของปุ่มที่คุณเพิ่มในขั้นตอนก่อนหน้าลงในช่อง None (Object) เลือกฟังก์ชันที่จะเรียกจากรายการแบบเลื่อนลง คลิก No Function > GameObject > SetActive(bool) แล้วคลิกช่องทำเครื่องหมายเพื่อให้ ส่ง true เป็นพารามิเตอร์ (เรียกใช้ SetActive(true))

ในส่วน Callbacks นี้ คุณยังลิงก์เหตุการณ์ที่จะเรียกเมื่อมีการทริกเกอร์เหตุการณ์ RewardedAd.OnUserEarnedReward ได้ด้วย ดูรายละเอียดเพิ่มเติมได้ใน ส่วนนี้

จากนั้นสร้างปุ่มเพื่อแสดงโฆษณาที่มีการให้รางวัลเมื่อคลิก จากส่วน Callbacks On Click() ใน Inspector ของปุ่ม ให้คลิกปุ่ม + แล้วลากและวาง GameObject ของตำแหน่งโฆษณาที่มีการให้รางวัล (ชื่อ Rewarded Ad ในตัวอย่างนี้) ลงในช่อง None (Object)

จากนั้นแนบฟังก์ชัน RewardedAdGameObject.ShowIfLoaded() กับ Callback On Click() ของปุ่ม

สุดท้ายนี้ อย่าลืมเริ่มต้น SDK ข้อมูลโค้ดต่อไปนี้เป็นโค้ดที่สมบูรณ์สำหรับฉากที่ใช้ในตัวอย่างนี้

using UnityEngine;

using GoogleMobileAds.Api;

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

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

เมื่อเรียกใช้โปรเจ็กต์ คุณจะเห็นปุ่มแสดงในฉากเมื่อโหลดโฆษณาที่มีการให้รางวัลและพร้อมที่จะแสดง

กำหนดค่า Callback รางวัลสำหรับ RewardedAdGameObject

ต่อไปนี้เป็นตัวอย่างวิธีกำหนดค่า Callback รางวัลสำหรับตำแหน่งโฆษณาที่มีการให้รางวัล เพื่อให้คุณมอบรางวัลแก่ผู้ใช้ได้เมื่อมีการเรียกใช้ฟังก์ชัน Callback

สร้างสคริปต์ใหม่และกำหนดฟังก์ชันที่ยอมรับ Reward เป็นพารามิเตอร์ดังนี้

using UnityEngine;
using GoogleMobileAds.Api;

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

แนบสคริปต์ RewardedTestScript กับ GameObject ใดก็ได้ (ยกเว้น GameObject ของตำแหน่งโฆษณา) ในฉาก ในตัวอย่างนี้ สคริปต์แนบอยู่กับ GameObject ของกล้องหลัก

เพิ่ม RewardedAdGameObject ลงในฉาก จากนั้นในส่วน Callbacks ใน Inspector ของ RewardedAdGameObject ให้คลิกปุ่ม + ใน On User Earned Reward (Reward) เพื่อเปิดใช้ฟังก์ชันที่จะเรียกเมื่อมีการให้รางวัลแก่ผู้ใช้

ลากและวาง GameObject ของกล้องหลักที่คุณเพิ่มในขั้นตอนก่อนหน้าลงในช่อง None (Object) เลือกฟังก์ชันที่จะเรียกจากรายการแบบเลื่อนลง คลิก No Function > RewardedTestScript > OnUserEarnedReward

เมื่อเรียกใช้โปรเจ็กต์และดูโฆษณาที่มีการให้รางวัล ระบบจะเรียกใช้ RewardedTestScript.OnUserEarnedReward() เมื่อคุณได้รับรางวัลสำหรับการโต้ตอบกับโฆษณา