โหลดโฆษณาเนทีฟ

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

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

เมื่อโฆษณาเนทีฟโหลด แอปจะได้รับออบเจ็กต์โฆษณาที่มีชิ้นงานของโฆษณา และแอป (ไม่ใช่ Google Mobile Ads SDK (Legacy)) จะเป็นผู้รับผิดชอบในการแสดงชิ้นงานเหล่านั้น

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

หน้านี้แสดงวิธีใช้ SDK เพื่อโหลดโฆษณาเนทีฟ เคล็ดลับ: ดูข้อมูลเพิ่มเติมเกี่ยวกับโฆษณาเนทีฟได้ใน Playbook สำหรับโฆษณาเนทีฟ

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

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

ตั้งค่า Google Mobile Ads SDK (Legacy) ก่อนดำเนินการต่อ

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

เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาจริงที่ใช้งานจริง

วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับโฆษณาเนทีฟใน Android ดังนี้

ca-app-pub-3940256099942544/2247696110

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

ดูรายละเอียดเกี่ยวกับโฆษณาทดสอบของ Google Mobile Ads SDK (Legacy) ได้ที่เปิดใช้โฆษณาทดสอบ

โหลดโฆษณา

โฆษณาเนทีฟจะโหลดด้วยคลาส AdLoader ซึ่งมีคลาส Builder ของตัวเองเพื่อปรับแต่งในระหว่างการสร้าง เมื่อสร้าง AdLoader แอปจะระบุประเภทของโฆษณาเนทีฟที่พร้อมรับโดยการเพิ่ม Listener ลงใน AdLoader จากนั้น AdLoader จะขอเฉพาะประเภทเหล่านั้น

สร้าง AdLoader

โค้ดต่อไปนี้แสดงวิธีสร้าง AdLoader ที่โหลดโฆษณาเนทีฟได้

Java

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

Kotlin

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

แทนที่ AD_UNIT_ID ด้วยรหัสอุปกรณ์ทดสอบ

เมธอด forNativeAd() มีหน้าที่เตรียม AdLoader สำหรับรูปแบบ NativeAd เมื่อโหลดโฆษณาสำเร็จ ระบบจะเรียกใช้เมธอด onNativeAdLoaded() ของออบเจ็กต์ Listener

ตั้งค่า AdListener ด้วย AdLoader (ไม่บังคับ)

เมื่อสร้าง AdLoader ฟังก์ชัน withAdListener จะตั้งค่า AdListener สำหรับตัวโหลด เมธอดนี้ใช้ AdListener เป็นพารามิเตอร์เดียว ซึ่งจะรับ Callback จาก AdLoader เมื่อเกิดเหตุการณ์ในวงจรของโฆษณา

Java

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

Kotlin

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

ส่งคำขอแสดงโฆษณา

เมื่อสร้าง AdLoader เสร็จแล้ว ก็ถึงเวลาใช้เพื่อขอโฆษณา ซึ่งทำได้ 2 วิธี ได้แก่ loadAd() และ loadAds()

loadAd()

วิธีนี้จะส่งคำขอโฆษณาเดียว

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

วิธีนี้จะส่งคำขอโฆษณาหลายรายการ (สูงสุด 5 รายการ) ดังนี้

Java

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

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

โหลดโฆษณาหลายรายการ (ไม่บังคับ)

เมธอด loadAds() จะใช้พารามิเตอร์เพิ่มเติม ซึ่งก็คือจำนวนโฆษณาที่ SDK ควรพยายามโหลดสำหรับคำขอ จำนวนนี้จำกัดไว้ที่ 5 รายการ และไม่รับประกันว่า SDK จะแสดงโฆษณาตามจำนวนที่ขอ

โฆษณา Google ที่แสดงผลจะแตกต่างกันทั้งหมด แม้ว่าจะไม่มีการรับประกันว่าโฆษณาจากพื้นที่โฆษณาที่จองไว้หรือผู้ซื้อบุคคลที่สามจะไม่ซ้ำกัน

อย่าใช้เมธอด loadAds() หากคุณใช้สื่อกลาง เนื่องจากคำขอโฆษณาเนทีฟหลายรายการใช้ไม่ได้กับรหัสหน่วยโฆษณาที่กำหนดค่าไว้สำหรับสื่อกลาง

Callback

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

หลังจากเรียกใช้ loadAds() ระบบจะเรียกกลับหลายครั้ง (อย่างน้อย 1 ครั้งและไม่เกินจำนวนคำขอโฆษณา) แอปที่ขอโฆษณาหลายรายการควรเรียกใช้ AdLoader.isLoading() ในการใช้งาน Callback เพื่อระบุว่ากระบวนการโหลดเสร็จสิ้นแล้วหรือไม่

ตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบ isLoading() ใน Callback onNativeAdLoaded()

Java

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

Kotlin

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

ทรัพยากรสำหรับการเปิดตัว

อย่าลืมใช้เมธอด destroy() กับโฆษณาเนทีฟที่โหลดแล้ว ซึ่งจะช่วยปล่อยทรัพยากรที่ใช้และป้องกันไม่ให้หน่วยความจำรั่วไหล

ยืนยันว่าการอ้างอิง NativeAd ทั้งหมดถูกทำลายในเมธอด onDestroy() ของกิจกรรม

ใน Callback onNativeAdLoaded ให้ตรวจสอบว่าได้ทำลายโฆษณาเนทีฟที่มีอยู่ซึ่งจะถูกยกเลิกการอ้างอิง

การตรวจสอบที่สำคัญอีกอย่างหนึ่งคือการตรวจสอบว่ากิจกรรมถูกทำลายหรือไม่ และหากถูกทำลาย ให้เรียกใช้ destroy() ในโฆษณาที่แสดงผลและแสดงผลทันที

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

แนวทางปฏิบัติแนะนำ

โปรดปฏิบัติตามกฎต่อไปนี้เมื่อโหลดโฆษณา

  • แอปที่ใช้โฆษณาเนทีฟในรายการควรแคชรายการโฆษณาล่วงหน้า

  • เมื่อแคชโฆษณาล่วงหน้า ให้ล้างแคชและโหลดซ้ำหลังจากผ่านไป 1 ชั่วโมง

  • อย่าเรียกใช้ loadAd() หรือ loadAds() ใน AdLoader จนกว่าคำขอแรกจะโหลดเสร็จ
  • จำกัดการแคชโฆษณาเนทีฟไว้เฉพาะที่จำเป็นเท่านั้น เช่น เมื่อทำการแคชล่วงหน้า ให้แคชเฉพาะโฆษณาที่มองเห็นได้ทันทีบนหน้าจอ โฆษณาเนทีฟใช้หน่วยความจำที่ใช้มาก และการแคชโฆษณาเนทีฟโดยไม่ทำลายจะส่งผลให้มีการใช้หน่วยความจำมากเกินไป

  • ทำลายโฆษณาเนทีฟเมื่อไม่ได้ใช้งานแล้ว

การเร่งฮาร์ดแวร์สำหรับโฆษณาวิดีโอ

คุณต้องเปิดใช้การเร่งฮาร์ดแวร์เพื่อให้โฆษณาวิดีโอแสดงในมุมมองโฆษณาเนทีฟได้สำเร็จ

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

การเปิดใช้การเร่งฮาร์ดแวร์

หากแอปทำงานไม่ถูกต้องเมื่อเปิดการเร่งฮาร์ดแวร์ทั่วโลก คุณสามารถควบคุมการเร่งฮาร์ดแวร์สำหรับกิจกรรมแต่ละรายการได้ด้วย หากต้องการเปิดหรือปิดใช้การเร่งฮาร์ดแวร์ ให้ใช้แอตทริบิวต์ android:hardwareAccelerated สำหรับองค์ประกอบ <application> และ <activity> ใน AndroidManifest.xml ตัวอย่างต่อไปนี้เปิดใช้การเร่งฮาร์ดแวร์สำหรับทั้งแอป แต่ปิดใช้สำหรับกิจกรรมเดียว

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

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

แสดงโฆษณา

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