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

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

สิ่งที่ต้องดำเนินการก่อน

เริ่มต้น SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google

ก่อนที่จะโหลดโฆษณา ให้เริ่มต้น SDK โฆษณาในอุปกรณ์เคลื่อนที่โดยการเรียก MobileAds.Initialize() ด้วยการเรียก Action<InitializationStatus> คุณต้องทําขั้นตอนนี้เพียงครั้งเดียวเท่านั้นเมื่อเปิดแอป

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

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

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

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

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

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

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

ภาพหน้าจอต่อไปนี้แสดงตัวอย่างตําแหน่งโฆษณาที่ชื่อแบนเนอร์ของฉัน

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

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

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

คุณสามารถเปลี่ยนชื่อของตําแหน่งได้โดยเปลี่ยนชื่อของเกม GameObject ภาพหน้าจอต่อไปนี้แสดงตัวอย่างของโฆษณาแบนเนอร์ชื่อ AdGameObject

การตั้งค่า AdGameObject

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

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

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

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

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

โค้ดเรียกกลับ

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

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

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

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

  4. เลือกฟังก์ชันที่ต้องการลิงก์ไปยังการเรียกกลับโฆษณา สําหรับการเรียกกลับของโฆษณาที่เป็นพารามิเตอร์ ให้เลือกฟังก์ชันเพื่อยอมรับตัวแปรแบบไดนามิกเพื่อให้ได้ค่าพารามิเตอร์จาก 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");
    }
}

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

หากต้องการขอโฆษณาด้วยตนเอง ให้ปิดใช้ฟีเจอร์โหลดอัตโนมัติจากเครื่องมือตรวจสอบตําแหน่งโฆษณา แล้วเรียกฟังก์ชัน 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 (ชื่อว่าปุ่มในตัวอย่างนี้) ในฉาก ซึ่งจะใช้เพื่อแสดงโฆษณาที่มีการให้รางวัล เราจะทําให้ปุ่มนี้พร้อมใช้งาน เมื่อมีโฆษณาที่มีการให้รางวัลเท่านั้น

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

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

เพิ่ม RewardedAdGameObject ลงในฉากและเลือกตําแหน่งโฆษณาโฆษณาที่มีการให้รางวัลของ AdMob จากเมนูแบบเลื่อนลง

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

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

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

จากนั้น ทําให้ปุ่มแสดงโฆษณาที่มีการให้รางวัลเมื่อคลิก จากส่วนกลับ

จากนั้นแนบฟังก์ชัน RewardedAdGameObject.ShowIfLoaded() ในการเรียกกลับ 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");
        });
    }
}

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

กําหนดค่าการเรียกกลับรางวัลสําหรับ RewardAdGameObject

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

สร้างสคริปต์ใหม่และกําหนดฟังก์ชันที่ยอมรับ 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 (ยกเว้น Ad Placement GameObject) ใดก็ได้ในฉาก ในตัวอย่างนี้จะแนบกับ GameGameObject หลัก

เพิ่ม RewardedAdGameObject ลงในฉาก จากนั้น ในส่วน "โค้ดเรียกกลับ" ในเครื่องมือตรวจสอบ RewardedAdGameObject ให้คลิกปุ่ม + ในรางวัลของผู้ใช้ (รางวัล) เพื่อให้ระบบเรียกใช้ฟังก์ชันเมื่อมีการให้รางวัลแก่ผู้ใช้

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

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