โฆษณาเนทีฟคือชิ้นงานโฆษณาที่แสดงต่อผู้ใช้ผ่านคอมโพเนนต์ UI ที่เป็นเนทีฟของแพลตฟอร์ม โดยจะแสดงโดยใช้มุมมองประเภทเดียวกับที่คุณใช้สร้างเลย์เอาต์อยู่แล้ว และสามารถจัดรูปแบบให้เข้ากับดีไซน์ภาพของแอปได้
เมื่อโฆษณาเนทีฟโหลด แอปจะได้รับออบเจ็กต์โฆษณาที่มีชิ้นงาน และแอป (ไม่ใช่ GMA Next-Gen SDK) จะมีหน้าที่ แสดงชิ้นงานเหล่านั้น
โดยทั่วไป การติดตั้งใช้งานโฆษณาเนทีฟให้สำเร็จจะมี 2 ส่วน ได้แก่ การโหลดโฆษณาโดยใช้ SDK แล้วแสดงเนื้อหาโฆษณาในแอป
หน้านี้จะแสดงวิธีใช้ SDK เพื่อโหลด โฆษณาเนทีฟ เคล็ดลับ: ดูข้อมูลเพิ่มเติมเกี่ยวกับโฆษณาเนทีฟได้ใน Native Ads Playbook
ตัวอย่างมีให้ใช้งานสำหรับ Java และ Kotlinนอกจากนี้ คุณยังดูเรื่องราวความสำเร็จของลูกค้าบางรายได้ที่ กรณีศึกษา 1 และ กรณีศึกษา 2
ข้อกำหนดเบื้องต้น
- ตั้งค่า GMA Next-Gen SDK
- GMA Next-Gen SDK เวอร์ชัน 0.6.0-alpha01 ขึ้นไป
ทดสอบด้วยโฆษณาสำหรับการทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาสำหรับการทดสอบแทนโฆษณาจริง หากไม่ปฏิบัติตามข้อกำหนดนี้ อาจส่งผลให้บัญชีของคุณถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาสำหรับการทดสอบคือการใช้รหัสหน่วยโฆษณาสำหรับการทดสอบโดยเฉพาะสำหรับโฆษณาเนทีฟ ดังนี้
| รูปแบบโฆษณา | รหัสหน่วยโฆษณาตัวอย่าง |
|---|---|
| เนทีฟ | ca-app-pub-3940256099942544/2247696110 |
| วิดีโอเนทีฟ | ca-app-pub-3940256099942544/1044960115 |
โหลดโฆษณา
หากต้องการโหลดโฆษณาเนทีฟ ให้เรียกใช้NativeAdLoader.load()
ซึ่งใช้NativeAdRequestและNativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest
class NativeFragment : Fragment() {
private var nativeAd: NativeAd? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
loadAd()
}
private fun loadAd() {
// Build an ad request with native ad options to customize the ad.
val adRequest = NativeAdRequest
.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
.build()
val adCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Called when a native ad has loaded.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Called when a native ad has failed to load.
}
}
// Load the native ad with our request and callback.
NativeAdLoader.load(adRequest, adCallback)
}
companion object {
// Sample native ad unit ID.
const val AD_UNIT_ID = "ca-app-pub-3940256099942544/2247696110"
}
}
ตั้งค่าการเรียกกลับของเหตุการณ์โฆษณาเนทีฟ
เมื่อจัดการ onNativeAdLoaded ให้ตั้งค่า NativeAd ที่ได้รับด้วย
NativeAdEventCallback
เพื่อกำหนดฟังก์ชันสำหรับการรับเหตุการณ์วงจรการทำงานของโฆษณาเนทีฟ
nativeAd.adEventCallback =
object : NativeAdEventCallback {
override fun onAdShowedFullScreenContent() {
// Native ad showed full screen content.
}
override fun onAdDismissedFullScreenContent() {
// Native ad dismissed full screen content.
}
override fun onAdFailedToShowFullScreenContent {
// Native ad failed to show full screen content.
}
override fun onAdImpression() {
// Native ad recorded an impression.
}
override fun onAdClicked() {
// Native ad recorded a click.
}
}
ไม่บังคับ: โหลดโฆษณาหลายรายการ
หากต้องการโหลดโฆษณาหลายรายการ ให้เรียกใช้ load() ด้วยพารามิเตอร์ numberOfAds ที่ไม่บังคับ
ค่าสูงสุดที่คุณตั้งได้คือ 5 ซึ่งแสดงถึงจำนวนโฆษณา
GMA Next-Gen SDK อาจไม่แสดงโฆษณาตามจำนวนที่คุณขอ
private fun loadAd() {
// Build an ad request with native ad options to customize the ad.
val adRequest = NativeAdRequest
.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
.build()
val adCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Called when a native ad has loaded.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Called when a native ad has failed to load.
}
override fun onAdLoadingCompleted() {
// Called when all native ads have loaded.
}
}
// Load the native ad with our request and callback.
NativeAdLoader.load(adRequest, 3, adCallback)
}
โฆษณาที่ GMA Next-Gen SDK แสดงนั้นไม่ซ้ำกัน แม้ว่าโฆษณาจากพื้นที่โฆษณาที่สงวนไว้ หรือผู้ซื้อบุคคลที่สามอาจไม่ซ้ำกัน
หากคุณใช้สื่อกลาง โปรดอย่าเรียกใช้เมธอด load() คำขอโฆษณาเนทีฟหลายรายการจะใช้ไม่ได้กับรหัสหน่วยโฆษณาที่กำหนดค่าไว้สำหรับสื่อกลาง
แนวทางปฏิบัติแนะนำ
ทำตามกฎต่อไปนี้เมื่อโหลดโฆษณา
แอปที่ใช้โฆษณาเนทีฟในรายการควรแคชล่วงหน้ารายการโฆษณา
เมื่อแคชโฆษณาล่วงหน้า ให้ล้างแคชและโหลดซ้ำหลังจากผ่านไป 1 ชั่วโมง
จำกัดการแคชโฆษณาเนทีฟให้มีเฉพาะสิ่งที่จำเป็นเท่านั้น เช่น เมื่อแคชล่วงหน้า ให้แคชเฉพาะโฆษณาที่มองเห็นได้ทันทีบนหน้าจอ โฆษณาเนทีฟใช้หน่วยความจำจำนวนมาก และการแคชโฆษณาเนทีฟโดยไม่ทำลายโฆษณาจะส่งผลให้มีการใช้หน่วยความจำมากเกินไป
ทำลายโฆษณาเนทีฟเมื่อไม่ได้ใช้งานแล้ว
การเร่งฮาร์ดแวร์สำหรับโฆษณาวิดีโอ
คุณต้องเปิดใช้การเร่งฮาร์ดแวร์เพื่อให้โฆษณาวิดีโอแสดงในมุมมองโฆษณาเนทีฟได้สำเร็จ hardware acceleration
การเร่งฮาร์ดแวร์จะเปิดใช้โดยค่าเริ่มต้น แต่บางแอปอาจเลือกที่จะปิดใช้ หากแอปของคุณเป็นเช่นนั้น เราขอแนะนำให้เปิดใช้การเร่งฮาร์ดแวร์สำหรับคลาสกิจกรรมที่ใช้โฆษณา
การเปิดใช้การเร่งฮาร์ดแวร์
หากแอปทำงานไม่ถูกต้องเมื่อเปิดใช้การเร่งฮาร์ดแวร์ทั่วโลก คุณสามารถควบคุมการเร่งฮาร์ดแวร์สำหรับกิจกรรมแต่ละรายการได้เช่นกัน หากต้องการเปิดหรือ
ปิดใช้การเร่งฮาร์ดแวร์ ให้ใช้แอตทริบิวต์ 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>
ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกสำหรับการควบคุมการเร่งฮาร์ดแวร์ได้ที่คู่มือการเร่งฮาร์ดแวร์ โปรดทราบว่าคุณจะเปิดใช้การเร่งฮาร์ดแวร์สำหรับมุมมองโฆษณาเดี่ยวแต่ละรายการไม่ได้หากปิดใช้กิจกรรม ดังนั้นกิจกรรมเองจะต้องเปิดใช้การเร่งฮาร์ดแวร์
แสดงโฆษณา
เมื่อโหลดโฆษณาแล้ว สิ่งที่เหลืออยู่คือการแสดงโฆษณาต่อผู้ใช้ โปรดไปที่คู่มือโฆษณาเนทีฟขั้นสูงเพื่อดูวิธีแสดงโฆษณา
ตัวอย่าง
ดาวน์โหลดและเรียกใช้แอปตัวอย่างที่แสดงการใช้ GMA Next-Gen SDK