โฆษณาเนทีฟคือชิ้นงานโฆษณาที่แสดงต่อผู้ใช้ผ่านคอมโพเนนต์ 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
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
เป็นพารามิเตอร์เดียว ซึ่งจะรับ
การเรียกกลับจาก 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()
วิธีนี้จะส่งคำขอโฆษณาหลายรายการ (สูงสุด 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()
แล้ว ระบบจะเรียกใช้การเรียกกลับครั้งเดียวไปยังเมธอด Listener ที่กำหนดไว้ก่อนหน้านี้เพื่อส่งออบเจ็กต์โฆษณาเนทีฟหรือรายงานข้อผิดพลาด
หลังจากเรียกใช้ loadAds()
ระบบจะเรียกใช้ฟังก์ชันเรียกกลับดังกล่าวหลายครั้ง (อย่างน้อย 1 ครั้ง
และไม่เกินจำนวนโฆษณาที่ขอ) แอปที่ขอโฆษณาหลายรายการ
ควรเรียกใช้ AdLoader.isLoading()
ในการติดตั้งใช้งานการเรียกกลับเพื่อ
พิจารณาว่ากระบวนการโหลดเสร็จสิ้นแล้วหรือไม่
ตัวอย่างต่อไปนี้แสดงวิธีตรวจสอบ 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().bui
ld(), 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().bu
ild(), 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
จนกว่าคำขอแรกจะโหลดเสร็จ
จำกัดการแคชโฆษณาเนทีฟเฉพาะสิ่งที่จำเป็น เช่น เมื่อแคชล่วงหน้า ให้แคชเฉพาะโฆษณาที่มองเห็นได้ทันทีบนหน้าจอ โฆษณาเนทีฟ ใช้หน่วยความจำมาก และการแคชโฆษณาเนทีฟโดยไม่ทำลายโฆษณา จะทำให้มีการใช้หน่วยความจำมากเกินไป
ทำลายโฆษณาเนทีฟเมื่อไม่ได้ใช้งานแล้ว
การเร่งฮาร์ดแวร์สำหรับโฆษณาวิดีโอ
คุณต้องเปิดใช้การเร่งด้วยฮาร์ดแวร์ เพื่อให้โฆษณาวิดีโอแสดงในมุมมองโฆษณาเนทีฟได้สำเร็จ
ระบบจะเปิดใช้การเร่งด้วยฮาร์ดแวร์โดยค่าเริ่มต้น แต่บางแอปอาจเลือก ปิดใช้ หากแอปของคุณเป็นเช่นนี้ เราขอแนะนำให้เปิดใช้การเร่งด้วยฮาร์ดแวร์สำหรับคลาส Activity ที่ใช้โฆษณา
การเปิดใช้การเร่งฮาร์ดแวร์
หากแอปทำงานไม่ถูกต้องเมื่อเปิดการเร่งด้วยฮาร์ดแวร์
ทั่วโลก คุณสามารถควบคุมการเร่งด้วยฮาร์ดแวร์สำหรับกิจกรรมแต่ละอย่างได้เช่นกัน หากต้องการเปิดหรือปิดใช้การเร่งฮาร์ดแวร์ ให้ใช้แอตทริบิวต์ android:hardwareAccelerated
สำหรับองค์ประกอบ
<application>
และ
<activity>
ใน AndroidManifest.xml
ตัวอย่างต่อไปนี้เปิดใช้การเร่งด้วยฮาร์ดแวร์
สำหรับทั้งแอป แต่ปิดใช้สำหรับกิจกรรมหนึ่งๆ
<application android:hardwareAccelerated=">true&<quot;
!-- For activities that use ads, hardwareAcceleration should b>e tru<e. --
activity android:hardwareAccelerate>d=&qu<ot;true" /
!-- For activities that don't use ads, hardwareAccel>erati<on can be false. --
activity android:hardw>a<reAccelerate>d
="false" /
/application
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกสำหรับการควบคุมการเร่งด้วยฮาร์ดแวร์ได้ในคำแนะนำ การเร่งด้วยฮาร์ดแวร์ โปรดทราบ ว่าคุณจะเปิดใช้มุมมองโฆษณาแต่ละรายการสำหรับการเร่งฮาร์ดแวร์ไม่ได้หากปิดใช้ กิจกรรม ดังนั้นกิจกรรมเองจึงต้องเปิดใช้การเร่งฮาร์ดแวร์
แสดงโฆษณา
เมื่อโหลดโฆษณาแล้ว สิ่งที่เหลืออยู่คือการแสดงโฆษณาต่อผู้ใช้ โปรดไปที่คู่มือขั้นสูงเกี่ยวกับโฆษณาเนทีฟเพื่อดูวิธี