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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

จากนั้น ทําให้ปุ่มแสดงโฆษณาที่มีการให้รางวัลเมื่อคลิก จากส่วนเรียกกลับ OnClickClick ในเครื่องมือตรวจสอบปุ่ม ให้คลิกปุ่ม + และลากและวางเกม GameObject ที่มีการให้รางวัล (ตั้งชื่อว่าโฆษณาที่มีการให้รางวัลในตัวอย่างนี้) ลงในช่องไม่มี (ออบเจ็กต์)

จากนั้นแนบฟังก์ชัน RewardedAdGameObject.ShowIfLoaded() กับปุ่มเรียกกลับ OnClick() ของปุ่ม

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

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

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

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