เริ่มเลย

คู่มือนี้แสดงวิธีใช้ส่วนเสริมโฆษณาเนทีฟเพื่อติดตั้งโฆษณาเนทีฟของ AdMob โฆษณาในแอป Unity รวมถึงสิ่งสำคัญที่ควรพิจารณาไปพร้อมกัน

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

โฆษณาเนทีฟจะแสดงโดยใช้ GameObjects ประเภทเดียวกับที่คุณใช้ สร้างแอปพลิเคชันของคุณอยู่แล้ว และสามารถจัดรูปแบบให้ตรงกับการออกแบบภาพของ ประสบการณ์ของผู้ใช้ที่พวกเขาอาศัยอยู่ เมื่อโฆษณาเนทีฟโหลดขึ้นมา ได้รับออบเจ็กต์เนทีฟที่มีเนื้อหาและแอป Unity (ไม่ใช่ SDK) แสดงครีเอทีฟโฆษณาเหล่านั้น

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

โหลดรูปแบบโฆษณาเนทีฟ

โฆษณาเนทีฟจะโหลดผ่านคลาส AdLoader ซึ่งมีโฆษณาประเภทนี้ AdLoader.Builder เพื่อปรับแต่งชั้นเรียนระหว่างการสร้าง ForNativeAd() จะกำหนดค่า AdLoader ให้จัดการโฆษณาเนทีฟ

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
}

ลงทะเบียนสำหรับเหตุการณ์โฆษณา AdLoader

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

OnNativeAdLoaded

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

OnAdFailedToLoad

เรียกใช้เมื่อโหลดโฆษณาเนทีฟไม่สำเร็จ

โหลดโฆษณา

เมื่อสร้าง AdLoader เสร็จแล้ว ให้เรียกใช้เมธอด LoadAd() เพื่อ ส่งคำขอโฆษณา:

adLoader.LoadAd(new AdRequest.Builder().Build());

รวมคำขอโฆษณาไว้ด้วยกัน

ข้อมูลโค้ดด้านล่างแสดงวิธีสร้าง AdLoader ที่ กำหนดค่าให้ขอโฆษณาเนทีฟ กำหนดผู้รับมอบสิทธิ์สำหรับโฆษณาที่ประสบความสำเร็จและล้มเหลว โหลดขึ้นมา และสร้างคำขอโฆษณา

private void RequestNativeAd() {
    AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
        .ForNativeAd()
        .Build();
    adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
    adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
    adLoader.LoadAd(new AdRequest.Builder().Build());
}

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

เหตุการณ์ OnAdFailedToLoad เป็นประเภท EventHandle<AdFailedToLoadEventArgs> การแยกวิเคราะห์สาเหตุที่ทำให้โหลดโฆษณาจากเหตุการณ์นี้ไม่สำเร็จมีดังต่อไปนี้

private void RequestNativeAd() {
    ...
    adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}

private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
    Debug.Log("Native ad failed to load: " + args.Message);
}

แสดงโฆษณาเนทีฟ

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

จัดการกับจำนวนโฆษณา

เหตุการณ์ OnNativeAdLoaded เป็นประเภท EventHandler<NativeAdEventArgs> ที่ห่อหุ้มอยู่ในออบเจ็กต์ NativeAd ซึ่งดึงมาจาก NativeAdEventArgs ตามที่แสดง:

private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
}

ดึงข้อมูลชิ้นงานโฆษณาเนทีฟ

เมื่อระบบโหลดโฆษณาแล้ว คุณจะเข้าถึงเนื้อหาได้ตามที่แสดงด้านล่าง กราฟิก เนื้อหาแสดงผลเป็นออบเจ็กต์ Texture2D และแสดงผลเนื้อหาข้อความเป็น string ออบเจ็กต์

private bool nativeAdLoaded;
private NativeAd nativeAd;

void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for the icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        // Get string for headline asset of native ad.
        string headline = this.nativeAd.GetHeadlineText();
    }
}

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}

โปรดทราบว่าคุณควรเข้าถึงชิ้นงานโฆษณาในเทรดหลักเท่านั้น เช่น จากเมธอด Update() ของสคริปต์ Unity และโปรดทราบว่าเนื้อหาต่อไปนี้ ไม่รับประกันว่าจะปรากฏทุกครั้ง และควรตรวจสอบก่อนแสดง แสดง:

  • GetStarRating()
  • GetStore()
  • GetPrice()
  • GetAdvertiser()
  • GetIconTexture()

ชิ้นงานตัวเลือกโฆษณาอื่นๆ

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

ลงทะเบียน GameObjects สำหรับชิ้นงานโฆษณา

คุณต้องลงทะเบียน GameObject เพื่อให้ชิ้นงานโฆษณาแสดงใน แอป Unity หากการลงทะเบียนสำเร็จ วิธีที่ใช้ในการลงทะเบียน GameObject แสดงผล bool สำหรับ List<GameObject> เมธอดจะแสดง int หมายถึงจำนวน GameObject ที่ลงทะเบียนเรียบร้อยแล้ว

หากการลงทะเบียนชิ้นงานโฆษณาไม่สำเร็จ การแสดงผลและการคลิก จะไม่รู้จักโฆษณาเนทีฟที่เกี่ยวข้อง

if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
    // Handle failure to register the icon ad asset.
}

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

ในข้อมูลโค้ดด้านล่าง จะมีการเพิ่ม BoxCollider ลงใน GameObject ที่ใช้ TextMesh เพื่อแสดงชิ้นงานโฆษณาบรรทัดแรกของโฆษณาเนทีฟ เมื่อ BoxCollider แนบอยู่กับ GameObject ก็จะปรับขนาดเป็น ปรับข้อความขององค์ประกอบ TextMesh ให้เหมาะสม

// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;

// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;

// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();

สาธิต

โค้ดต่อไปนี้แสดงวิธีเรียกข้อมูลเนื้อหาไอคอนของ โฆษณาเนทีฟที่โหลด แสดงชิ้นงานโฆษณาไอคอนโดยการตั้งค่าพื้นผิวของ Quad และลงทะเบียน GameObject เพื่อใช้แสดงชิ้นงาน ขั้นตอนนี้ การดึงข้อมูลชิ้นงานโฆษณาและการลงทะเบียนชิ้นงานกับคลาสโฆษณาเนทีฟ ซ้ำสำหรับเนื้อหาแต่ละรายการที่แอปแสดง

private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
    ...

    if (this.nativeAdLoaded) {
        this.nativeAdLoaded = false;
        // Get Texture2D for icon asset of native ad.
        Texture2D iconTexture = this.nativeAd.GetIconTexture();

        icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
        icon.transform.position = new Vector3(1, 1, 1);
        icon.transform.localScale = new Vector3(1, 1, 1);
        icon.GetComponent<Renderer>().material.mainTexture = iconTexture;

        // Register GameObject that will display icon asset of native ad.
        if (!this.nativeAd.RegisterIconImageGameObject(icon))
        {
            // Handle failure to register ad asset.
        }
    }
}
...

private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
    Debug.Log("Native ad loaded.");
    this.nativeAd = args.nativeAd;
    this.nativeAdLoaded = true;
}