บันทึกการเปลี่ยนแปลงและบันทึกย่อประจำรุ่นของ Audience Network SDK ของ Meta สำหรับ Android
ต้องดำเนินการ: อัพเดตแอพ Android ของคุณเป็น SDK 6.5 เพื่อสร้างรายได้จากแอพบน Audience Network ต่อไป
คุณจะต้องอัพเดตแอพ Android ของคุณเป็น Audience SDK 6.5 ขึ้นไปเพื่อดำเนินการและสร้างรายได้บน Audience Network ต่อไป Audience Network SDK เวอร์ชั่นเก่ากว่านี้ไม่สามารถใช้กับแอพที่กำหนดเป้าหมายเป็น Android เวอร์ชั่น 12 ขึ้นไปได้ (ระดับ API 31 ขึ้นไป) และจะทำงานไม่ถูกต้องกับแอพบนอุปกรณ์เหล่านี้
IllegalStateException
ใน MediaPlayer ของ Android/apex/com.android.art/lib64/libart.so (art::OatHeader::IsDebuggable() const+124)
ใน Android เวอร์ชั่น 11java.lang.IllegalStateException: Software rendering doesn't support hardware bitmaps
pc 00000000000830f0 /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
ClassNotFoundException when unmarshalling
เปิดตัว API รูปแบบใหม่ที่ยืดหยุ่นสำหรับโฆษณาทุกรูปแบบ การทำเช่นนี้ช่วยให้สามารถระบุพารามิเตอร์แบบกำหนดเองทั้งหมดสำหรับการโหลดและแสดงโฆษณาได้โดยใช้อ็อบเจ็กต์เครื่องมือสร้าง ซึ่งจะได้มาผ่านการเรียกใช้เมธอด Ad.buildLoadConfig()
ระบบจะยังคงรองรับ API แบบเก่าต่อไปอีกไม่นานนัก แต่ระบบก็จะลบออกไปในท้ายที่สุด
IntersitialAd ad = new InterstitialAd(Context, String); ad.loadAd(ad.buildLoadConfig() // LoadConfigBuilder .withBid(String) .withListener(AdListener) .withCacheFlags(CacheFlags) .build()); // builds LoadConfig
มีการเปลี่ยนแปลงเกี่ยวกับเครือข่ายและการตรรกะในการแคชเพื่อปรับปรุงประสิทธิภาพการทำงาน
เราได้เปลี่ยนการตั้งค่าสถานะป้ายกำกับสำหรับกลุ่มเป้าหมายแบบผสมจาก isChildDirected
เป็น MixedAudience
ดูข้อมูลเพิ่มเติมเกี่ยวกับกลุ่มเป้าหมายแบบผสมและ COPPA ได้ที่นี่:
withPreloadedIconView
ซึ่งช่วยให้สามารถแคชองค์ประกอบของไอคอนสำหรับโฆษณาแบบเนทีฟไว้ล่วงหน้าได้ ต้องระบุความกว้างและความสูงNativeAdBase .buildLoadAdConfig() // NativeAdBase.LoadAdConfigBuilder .withBidPayload(String) .withCacheFlags(MediaCacheFlags) .withPreloadedIconView(int w, int h) .loadAd();
loadAd()
รองไปยังอ็อบเจ็กต์โฆษณา หากมีการโหลดคำขออื่นอยู่แล้ว หรือส่งคำขอ showAd()
รองไปยังอ็อบเจ็กต์โฆษณาหากมีโฆษณาแสดงอยู่บนหน้าจอแล้วImageView
และ MediaView
แทนกันได้แล้วสำหรับ NativeBannerAd
ImageView
ที่มี NativeBannerAd
คุณสามารถสร้างโฆษณาแบบแบนเนอร์แบบเนทีฟโดยใช้ ImageView
ได้แล้ว มีการเพิ่มเมธอดใหม่ๆ (ดูด้านล่าง) เพื่อให้สามารถทำสิ่งนี้ได้ โปรดทราบว่าระบบจะยังคงรองรับการใช้ MediaView
class NativeBannerAd { /** * Registers the given view as the container and the required ImageView as the Icon display * for this NativeBannerAd to handle impressions and clicks. * ImageView must be within the view passed as the container for this NativeBannerAd. * Applies a click handler to the entire unit. * @param view the View containing this NativeBannerAd for display * @param iconView ImageView to display Icon for this NativeBannerAd * * @since 5.4 */ public void registerViewForInteraction(View view, ImageView iconView); /** * Registers the given view as the container and the required ImageView as the Icon display * for this NativeBannerAd to handle impressions and clicks. * ImageView must be within the view passed as the container for this NativeBannerAd. * Applies a click handler to the entire unit. * @param view the View containing this NativeBannerAd for display * @param iconView ImageView to display Icon for this NativeBannerAd * @param clickableViews a list of all view elements that should handle taps on this unit * * @since 5.4 */ public void registerViewForInteraction( View view, ImageView iconView, @Nullable final List<View> clickableViews); }
ตอนนี้ Android SDK ของเราใช้แคชแบบใหม่สำหรับจัดเก็บโฆษณาที่ดาวน์โหลดมา แคชแบบใหม่นี้มีความน่าเชื่อถือมากขึ้นและจะลดจำนวนข้อผิดพลาดเกี่ยวกับการแคชลงได้
ตอนนี้ เราจะให้ตัวอย่างแอพพลิเคชั่นที่ใช้ Audience Network SDK ของ Meta ใน Kotlin
Exoplayer จะไม่ใช่ทรัพยากรที่ SDK จำเป็นต้องใช้อีกต่อไป
RecyclerView
NativeBannerAd
อีกต่อไปBidderTokenProvider.getBidderToken()
บ่อยครั้งได้แล้ว และโทเค็นผู้ประมูลจะได้รับการคำนวณล่วงหน้าเมื่อเริ่มทำงาน ด้วยเหตุนี้ เมื่อ SDK เริ่มทำงาน การรับโทเค็นผู้ประมูลก็จะเร็วกว่าเวอร์ชั่นก่อนหน้า ซึ่งช่วยหลีกเลี่ยงปัญหาเกี่ยวกับเวลาแฝงได้isInitialized
) ใน AudienceNetworkAds
ที่ช่วยให้แอพพลิเคชั่นต่างๆ สามารถทดสอบได้ว่า SDK มีการเริ่มทำงานหรือไม่ ซึ่งช่วยให้ผู้เผยแพร่สามารถหลีกเลี่ยงการเริ่มทำงานซ้ำซ้อนกันได้getAdsProcessName
) ใน AudienceNetworkAds
ที่ช่วยให้แอพพลิเคชั่นต่างๆ สามารถตรวจสอบได้ว่ากระบวนการในปัจจุบันเป็นกระบวนการ SDK ภายในหรือไม่ (เหมือนกับ isInAdsProcess
ที่เปิดตัวไปในเวอร์ชั่น 5.1) ในกรณีของผู้เผยแพร่ที่ต้องการควบคุมกระบวนการสำหรับแอพของตนได้มากขึ้น ก็สามารถใช้เมธอดนี้เพื่อกรองกระบวนการที่มาจาก SDK โฆษณาNativeAdViewAttributes
จำเป็นต้องใช้อ็อบเจ็กต์บริบทแล้วAdOptionsView
MediaView
(โฆษณาแบบเนทีฟ)Fatal Exception: android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
Error: java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread.
AdOptionsView
สำหรับโฆษณาแบบเนทีฟซึ่งมีความยืดหยุ่นมากกว่าError: java.lang.RuntimeException: Unable to pause activity {com.your.app/com.facebook.ads.AudienceNetworkActivity}: java.lang.NullPointerException
สำหรับโฆษณาคั่นแบบภาพสไลด์java.lang.NoSuchMethodError: android.view.ViewTreeObserver.removeOnGlobalLayoutListener
java.lang.IllegalStateException: The specified child already has a parent