โฆษณาเนทีฟ

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

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

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

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

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

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

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

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

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

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

ca-app-pub-3940256099942544/2247696110

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่โฆษณาทดสอบของ Google Mobile Ads SDK ทำงานได้ที่ โฆษณาทดสอบ

โหลดโฆษณา

โฆษณาเนทีฟจะโหลดด้วยคลาส AdLoader ซึ่งมีคลาส Builder ของตัวเองเพื่อปรับแต่งในระหว่างการสร้าง การเพิ่ม 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 เป็นพารามิเตอร์เดียว ซึ่งจะได้รับการเรียกกลับจาก 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() หากคุณใช้สื่อกลาง เนื่องจากคำขอโฆษณาเนทีฟหลายรายการใช้ไม่ได้กับรหัสหน่วยโฆษณาที่กำหนดค่าไว้สำหรับสื่อกลาง

การติดต่อกลับ

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

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

ตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบ isLoading() ใน การเรียกกลับ 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() ของกิจกรรม

ใน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>

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

แสดงโฆษณา

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