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

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

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

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

การตั้งค่า AdGameObject

คุณกำหนดค่า AdGameObject ในฉากได้จากมุมมองเครื่องมือตรวจสอบในการตั้งค่าสำหรับคอมโพเนนต์ออบเจ็กต์เกมโฆษณา (สคริปต์)

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

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

การกำหนดค่า 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 คุณจะรับอินสแตนซ์ของ URL ได้ดังนี้

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

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

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

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

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

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

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

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

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

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

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

จากนั้นแนบฟังก์ชัน 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");
        });
    }
}

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

กำหนดค่าโค้ดเรียกกลับสำหรับรางวัลสำหรับ RewardedAdGameObject

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

สร้างสคริปต์ใหม่และกำหนดฟังก์ชันที่ยอมรับ 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) ในฉาก ในตัวอย่างนี้ พารามิเตอร์แนบอยู่กับ GameObject หลักในกล้อง

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

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

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