Facebook Audience SDK 导致崩溃

Facebook Audience SDK Causing CRASH

我最近将我的应用程序的 facebook 受众 sdk 更新到最新版本,并且总是因为 onLoggingImpression 而崩溃,这是 AdListener 中的一个新方法,下面是我得到的堆栈跟踪。我在这里使用自定义 admob facebook 适配器。

*

java.lang.AbstractMethodError: abstract method "void com.facebook.ads.AdListener.onLoggingImpression(com.facebook.ads.Ad)"
                                                                           at com.facebook.ads.InterstitialAd.b(Unknown Source)   
                                                                           at com.facebook.ads.internal.DisplayAdController.onInterstitialLoggingImpression(Unknown Source)
                                                                           at com.facebook.ads.internal.adapters.s.onReceive(Unknown Source)
                                                                           at android.support.v4.b.g.a(LocalBroadcastManager.java:297)
                                                                           at android.support.v4.b.g.a(LocalBroadcastManager.java:46)
                                                                           at android.support.v4.b.g.handleMessage(LocalBroadcastManager.java:116)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6123)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

*

很可能您需要为 Facebook 受众网络更新 Admob SDK 或 admob 适配器。

这个问题发生在我几个月没有碰它重建我的项目之后,因此在 gradle 同步后下载了最新版本的 FAN SDK。由于我正在使用 AOL 提供的 One 来调解 FAN,我已将其用于 FAN 的 SDK 和适配器更新为最新版本,应用程序停止崩溃 - 错误不再发生。因此,AdMob 的情况可能相同 - 需要添加更新的 SDK 或适配器版本,以便 Facebook 广告正常运行。

我在过去几天更新到 Facebook Audience Network (FAN) SDK 4.25.0 时遇到了同样的问题。插页式广告效果很好,但横幅会导致崩溃。

原因是 Facebook Audience Network 的 com.facebook.ads.AdListener class 添加了一个额外的回调函数 -- onLoggingImpression. AudienceNetwork.jar 假定无论处理广告的代码是什么——在这种情况下是 MoPub 的自定义事件适配器——将处理 ALL它定义的回调函数。

因此在这种情况下,只需更新 Facebook 自定义事件适配器即可。

MoPub 在 Github 上提供了代码:Mopub Android SDK。你要的文件是FacebookBanner.java.

如果您将项目直接编译为 Android 项目,您可以直接从 MoPub 下载中获取 FacebookBanner.java 文件,然后 用它替换现有的

但是,如果您像许多人一样使用 Unity,您将需要做额外的工作才能将其转换为 .jar 文件。这有点复杂,所以我上传了一个 bitbucket project here.

要使用 bitbucket 项目,请单击 link 并下载它,然后按照 README 说明进行操作,这些说明包含在下载中以及 bitbucket 的概述页面上。 for MacOS构建说明如下:

  1. 打开命令行(终端)并导航到项目文件夹。
  2. 运行“go”脚本,输入“./go
  3. FacebookBanner.jar 复制到 Assets/Plugins/Android 文件夹中的 Unity 项目中。
  4. 重建您的 Unity 项目。

如果你想以“正确”的方式做事,你应该下载 FacebookBanner.java 并将其放在下载的项目中的文件夹com/mopub/mobileads/。我已经在项目中有了它,但你可以这样更新它。

如果您使用的不是 MacOS,您可以直接获取 FacebookBanner.jar 文件,该文件也包含在 bitbucket 项目中。

如果您不想做这项工作而只想下载这两个文件,请在此处下载:

FacebookBanner.java

FacebookBanner.jar

显然那些会过时,但现在您已经有了完整的解决方案。 :)

祝你好运!

感谢@Adomas,问题应该出在 Facebook 适配器上。

这是最新的集成指南。 https://developers.google.com/admob/android/mediation/facebook

现在我们不需要手动下载适配器了。

compile 'com.facebook.android:audience-network-sdk:4.25.0'
compile 'com.google.ads.mediation:facebook:4.25.0.0'

但我使用的是 4.23.0,因为 4.25.0 在我构建项目后显示了一些警告。