โฆษณาเนทีฟ

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

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

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

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

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

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

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

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

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

ca-app-pub-3940256099942544/2247696110

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

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

โหลดโฆษณา

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

สร้าง AdLoader

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

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

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

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

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

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

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

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

loadAd()

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

Java

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

Kotlin

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

loadAds()

วิธีนี้จะส่งคำขอสำหรับโฆษณาหลายรายการ (ไม่เกินห้ารายการ):

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

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

โหลดโฆษณาหลายรายการ (ตัวเลือก)

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

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

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

Callback

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

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

นี่คือตัวอย่างที่แสดงวิธีตรวจสอบ isLoading() ใน onNativeAdLoaded() ติดต่อกลับ:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

ปล่อยทรัพยากร

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

ตรวจสอบว่าได้ทำลายการอ้างอิง NativeAd ทั้งหมดในกิจกรรม onDestroy() วิธี

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

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

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

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

ทำตามกฎเหล่านี้ขณะโหลดโฆษณา

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

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

  • อย่าเรียกใช้ loadAd() หรือ loadAds() ใน AdLoader จนกว่าคำขอแรกจะโหลดเสร็จ

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

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

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

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

หากแอปทำงานไม่ถูกต้องเมื่อเปิดการเร่งด้วยฮาร์ดแวร์ไว้โดยรวม คุณสามารถควบคุมการเร่งด้วยฮาร์ดแวร์สำหรับแต่ละกิจกรรมได้เช่นกัน หากต้องการเปิดใช้หรือ ปิดใช้การเร่งฮาร์ดแวร์ ใช้แอตทริบิวต์ 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>

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

แสดงโฆษณา

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