2

我在我的 android 应用程序中集成了 facebook 原生广告,引用了官方文档:https ://developers.facebook.com/docs/audience-network/android/native-api 。

我有两个问题:

1)实施建议:

这就是我实现它的方式。

  • 我的 RecyclerView 作为数据源附加到游标。
  • 游标的每一行都有一个“类型”列。

  • 在 RecyclerView 的 getItemViewType(position) 方法中根据每个行项目的“类型”参数决定视图。

  • 我将 facebook 原生广告缓存在 Hashmap 中,键设置为 nativeAd.getId()。

  • 缓存是使用 Facebook 的 NativeAdsManager 完成的。

  • 当我的行“类型”是“广告”时,我会在哈希图中搜索该广告 ID。从 Hashmap 中检索该广告并相应地显示广告视图。

上述实现工作顺利(大部分时间)。我的问题是,这种实现的效率如何?(如果您已经使用光标作为数据源实施了 fb 原生广告,请向我推荐您的方法)

2) Facebook 广告崩溃

为了显示原生广告,我使用 Facebook 在文档 ( https://developers.facebook.com/docs/audience-network/android/native-api ) 中建议的 MediaView 来显示广告封面图片。

它在显示照片时正常工作,但在显示视频广告时会出现不可预知的行为。一些视频广告使应用程序崩溃,但有以下例外:

09-14 20:31:00.306  13492-13492/com.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example, PID: 13492
java.lang.IllegalStateException
        at android.media.MediaPlayer._getCurrentPosition(Native Method)
        at android.media.MediaPlayer.getCurrentPosition(MediaPlayer.java:1888)
        at com.facebook.ads.internal.view.video.support.d.getCurrentPosition(Unknown Source)
        at com.facebook.ads.internal.view.video.support.a.getCurrentPosition(Unknown Source)
        at com.facebook.ads.internal.view.video.a$2.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:157)
        at android.app.ActivityThread.main(ActivityThread.java:5633)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712)
        at dalvik.system.NativeStart.main(Native Method)

对此一无所知,任何帮助将不胜感激。谢谢。

4

0 回答 0