โฆษณาเนทีฟคือชิ้นงานโฆษณาที่แสดงต่อผู้ใช้ผ่านคอมโพเนนต์ UI ที่เป็นของแพลตฟอร์มนั้นๆ รายการจะแสดงโดยใช้มุมมองประเภทเดียวกับที่คุณใช้สร้างเลย์เอาต์อยู่แล้ว และสามารถจัดรูปแบบให้เข้ากับการออกแบบภาพของแอปได้
เมื่อโฆษณาเนทีฟโหลด แอปของคุณจะได้รับออบเจ็กต์โฆษณาที่มีชิ้นงาน จากนั้นแอปจะเป็นผู้รับผิดชอบในการแสดงโฆษณาแทน SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
โดยทั่วไปแล้ว การใช้งานโฆษณาเนทีฟให้ประสบความสําเร็จมี 2 ส่วน ได้แก่ การโหลดโฆษณาโดยใช้ SDK แล้วแสดงเนื้อหาโฆษณาในแอป
หน้านี้แสดงวิธีใช้ SDK เพื่อโหลดโฆษณาเนทีฟ เคล็ดลับ: ดูข้อมูลเพิ่มเติมเกี่ยวกับโฆษณาเนทีฟในPlaybook ของโฆษณาเนทีฟ
นอกจากนี้ คุณยังดูเรื่องราวความสำเร็จของลูกค้าบางส่วนได้ ดังนี้ กรณีศึกษา 1 กรณีศึกษา 2
ข้อกำหนดเบื้องต้น
- ทำตามคู่มือเริ่มต้นใช้งาน
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาเวอร์ชันที่ใช้งานจริง
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับโฆษณาเนทีฟใน Android
ca-app-pub-3940256099942544/2247696110
อุปกรณ์นี้ได้รับการกําหนดค่ามาเป็นพิเศษให้แสดงโฆษณาทดสอบสําหรับคําขอทุกรายการ และคุณสามารถนำไปใช้ในแอปของคุณเองได้ขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงตรวจสอบว่าคุณได้แทนที่รหัสดังกล่าวด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโฆษณาทดสอบของ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ได้ที่โฆษณาทดสอบ
โหลดโฆษณา
โฆษณาเนทีฟจะโหลดด้วยคลาส AdLoader
ซึ่งมีคลาส Builder
ของตัวเองสําหรับปรับแต่งระหว่างการสร้าง การเพิ่มตัวรับฟังลงใน 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()
เมธอดของออบเจ็กต์ตัวฟัง
ตั้งค่า AdListener ด้วย AdLoader (ไม่บังคับ)
เมื่อสร้าง AdLoader
ฟังก์ชัน withAdListener
จะตั้งค่า AdListener
สำหรับโปรแกรมโหลด เมธอดนี้ใช้ AdListener
เป็นพารามิเตอร์เดียว ซึ่งจะรับการเรียกกลับจาก AdLoader
เมื่อเกิดเหตุการณ์ในวงจรของโฆษณา
Java
.withAdListener(new AdListener() {
// AdListener callbacks can be overridden here.
})
Kotlin
.withAdListener(object : AdListener() {
// AdListener callbacks can be overridden here.
})
ส่งคำขอแสดงโฆษณา
เมื่อสร้าง AdLoader
เสร็จแล้ว ก็ถึงเวลาใช้ AdLoader
เพื่อขอโฆษณา
ซึ่งทำได้ 2 วิธี ได้แก่ loadAd()
และ loadAds()
loadAd()
วิธีนี้จะส่งคําขอโฆษณารายการเดียว
Java
adLoader.loadAd(new AdRequest.Builder().build());
Kotlin
adLoader.loadAd(AdRequest.Builder().build())
loadAds()
วิธีนี้จะส่งคําขอโฆษณาหลายรายการ (สูงสุด 5 รายการ)
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()
หากคุณใช้สื่อกลาง เนื่องจากปัจจุบันคําขอโฆษณาเนทีฟหลายรายการใช้ไม่ได้กับรหัสหน่วยโฆษณาที่กำหนดค่าไว้สําหรับสื่อกลาง
การติดต่อกลับ
หลังจากเรียกใช้ loadAd()
ระบบจะเรียก Callback 1 ครั้งไปยังเมธอด Listener ที่กําหนดไว้ก่อนหน้านี้เพื่อแสดงออบเจ็กต์โฆษณาเนทีฟหรือรายงานข้อผิดพลาด
หลังจากการเรียก loadAds()
ระบบจะทำการเรียกกลับหลายครั้ง (อย่างน้อย 1 ครั้ง และไม่เกินจำนวนโฆษณาที่ขอ) แอปที่ขอโฆษณาหลายรายการควรเรียกใช้ AdLoader.isLoading()
ในการใช้งานการเรียกกลับเพื่อระบุว่ากระบวนการโหลดเสร็จสิ้นแล้วหรือยัง
ต่อไปนี้เป็นตัวอย่างที่แสดงวิธีตรวจสอบ isLoading()
ใน callback ของ 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
callback อย่าลืมทำลายโฆษณาเนทีฟที่มีอยู่ซึ่งจะถูกยกเลิกการอ้างอิง
การตรวจสอบที่สำคัญอีกอย่างหนึ่งคือดูว่ากิจกรรมถูกทำลายหรือไม่ หากเป็นเช่นนั้น ให้เรียก 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>
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกในการควบคุมการเร่งด้วยฮาร์ดแวร์ได้ในคำแนะนำเกี่ยวกับการเร่งด้วยฮาร์ดแวร์ โปรดทราบว่าคุณจะเปิดใช้การเร่งฮาร์ดแวร์สําหรับการแสดงโฆษณาแต่ละรายการไม่ได้หากกิจกรรมปิดอยู่ ดังนั้นกิจกรรมเองจึงต้องเปิดใช้การเร่งฮาร์ดแวร์
แสดงโฆษณา
เมื่อโหลดโฆษณาแล้ว สิ่งที่เหลืออยู่คือการแสดงโฆษณาต่อผู้ใช้ โปรดไปที่คู่มือขั้นสูงของโฆษณาเนทีฟเพื่อดูวิธี