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

เลือกแพลตฟอร์ม: Android iOS Unity Flutter

โฆษณาที่มีการให้รางวัลคือโฆษณาที่ผู้ใช้มีตัวเลือกในการโต้ตอบเพื่อแลกกับรางวัลในแอป คู่มือนี้แสดงวิธีผสานรวมโฆษณาที่มีการให้รางวัลจาก AdMob เข้ากับแอป Unity

อ่านเรื่องราวความสำเร็จของลูกค้าบางส่วนได้ที่ กรณีศึกษา 1 กรณีศึกษา 2

คู่มือนี้อธิบายวิธีผสานรวมโฆษณาที่มีการให้รางวัลเข้ากับแอป Unity

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

ทดสอบด้วยโฆษณาทดสอบเสมอ

โค้ดตัวอย่างต่อไปนี้มีรหัสหน่วยโฆษณาที่คุณใช้เพื่อขอ โฆษณาทดสอบได้ ซึ่งได้รับการกำหนดค่าเป็นพิเศษให้แสดงโฆษณาทดสอบแทน โฆษณาจริงสำหรับทุกคำขอ จึงใช้งานได้อย่างปลอดภัย

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

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

เริ่มต้น Mobile Ads SDK

ก่อนที่จะโหลดโฆษณา ให้แอปเริ่มใช้งาน Mobile Ads SDK โดยการเรียกใช้ MobileAds.Initialize() โดยคุณต้องดำเนินการนี้เพียงครั้งเดียว ซึ่งควรทำเมื่อเปิดตัวแอป

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

หากใช้สื่อกลาง ให้รอจนกว่าจะเกิด Callback ก่อนโหลดโฆษณา เนื่องจากวิธีนี้จะช่วยให้มั่นใจได้ว่าระบบได้เริ่มต้นใช้งานอะแดปเตอร์สื่อกลางทั้งหมดแล้ว

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

การโหลดโฆษณาที่มีการให้รางวัลจะทำได้โดยใช้เมธอดแบบคงที่ Load() ในคลาส RewardedAd ระบบจะระบุออบเจ็กต์ RewardedAd ที่โหลดเป็นพารามิเตอร์ใน Completion Handler ตัวอย่างต่อไปนี้จะโหลดโฆษณาที่มีการให้รางวัล

// Create our request used to load the ad.
var adRequest = new AdRequest();

// Send the request to load the ad.
RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd ad, LoadAdError error) =>
{
    if (error != null)
    {
        // The ad failed to load.
        return;
    }
    // The ad loaded successfully.
});

แทนที่ AD_UNIT_ID ด้วยรหัสหน่วยโฆษณา

[ไม่บังคับ] ตรวจสอบความถูกต้องของ Callback การยืนยันฝั่งเซิร์ฟเวอร์ (SSV)

แอปที่ต้องการข้อมูลเพิ่มเติมใน Callback ของการยืนยันฝั่งเซิร์ฟเวอร์ ควรใช้ฟีเจอร์ข้อมูลที่กำหนดเองของโฆษณาที่มีการให้รางวัล ระบบจะส่งค่าสตริงที่ตั้งค่าไว้ในออบเจ็กต์โฆษณาที่มีการให้รางวัลไปยังcustom_data พารามิเตอร์การค้นหาของคอลแบ็ก SSV หากไม่ได้ตั้งค่าข้อมูลที่กําหนดเอง custom_data ค่าพารามิเตอร์การค้นหาจะไม่ปรากฏในการเรียกกลับ SSV

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

// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
{
    CustomData = ""SAMPLE_CUSTOM_DATA_STRING""
};

rewardedAd.SetServerSideVerificationOptions(options);

แทนที่ SAMPLE_CUSTOM_DATA_STRING ด้วยข้อมูลที่กำหนดเอง

หากต้องการตั้งค่าสตริงรางวัลที่กำหนดเอง คุณต้องตั้งค่าก่อนแสดงโฆษณา

แสดงโฆษณาที่มีการให้รางวัลพร้อมการเรียกกลับของรางวัล

เมื่อแสดงโฆษณา คุณต้องระบุ Callback เพื่อจัดการรางวัลสำหรับผู้ใช้ โฆษณาจะแสดงได้ครั้งเดียวต่อการโหลด ใช้เมธอด CanShowAd() เพื่อ ยืนยันว่าโฆษณาพร้อมแสดง

โค้ดต่อไปนี้แสดงวิธีที่ดีที่สุดในการแสดงโฆษณาที่มีการให้รางวัล

if (rewardedAd != null && rewardedAd.CanShowAd())
{
    rewardedAd.Show((Reward reward) =>
    {
        // The ad was showen and the user earned a reward.
    });
}

รอเหตุการณ์โฆษณาที่มีการให้รางวัล

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

rewardedAd.OnAdPaid += (AdValue adValue) =>
{
    // Raised when the ad is estimated to have earned money.
};
rewardedAd.OnAdImpressionRecorded += () =>
{
    // Raised when an impression is recorded for an ad.
};
rewardedAd.OnAdClicked += () =>
{
    // Raised when a click is recorded for an ad.
};
rewardedAd.OnAdFullScreenContentOpened += () =>
{
    // Raised when the ad opened full screen content.
};
rewardedAd.OnAdFullScreenContentClosed += () =>
{
    // Raised when the ad closed full screen content.
};
rewardedAd.OnAdFullScreenContentFailed += (AdError error) =>
{
    // Raised when the ad failed to open full screen content.
};

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

เมื่อใช้งาน RewardedAd เสร็จแล้ว ให้เรียกใช้เมธอด Destroy() ก่อนที่จะทิ้งการอ้างอิง

if (rewardedAd != null)
{
    rewardedAd.Destroy();
}

ซึ่งจะแจ้งให้ปลั๊กอินทราบว่าไม่ได้ใช้ออบเจ็กต์นั้นอีกต่อไปและสามารถเรียกคืนหน่วยความจำที่ออบเจ็กต์นั้น ใช้ได้ การไม่เรียกใช้เมธอดนี้จะทำให้เกิดหน่วยความจำรั่ว

โหลดโฆษณาที่มีการให้รางวัลถัดไปล่วงหน้า

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

หากต้องการเตรียมโฆษณาที่มีการให้รางวัลสำหรับโอกาสในการแสดงผลครั้งถัดไป ให้โหลดโฆษณาที่มีการให้รางวัลล่วงหน้าเมื่อมีการเรียกใช้เหตุการณ์โฆษณา OnAdFullScreenContentClosed หรือ OnAdFullScreenContentFailed

rewardedAd.OnAdFullScreenContentClosed += () =>
{
    // Reload the ad so that we can show another as soon as possible.
    var adRequest = new AdRequest();
    RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd ad, LoadAdError error) =>
    {
        // Handle ad loading here.
    });
};

แหล่งข้อมูลเพิ่มเติม