Facebook Audience Network 导致 NullPointerException

Posted

技术标签:

【中文标题】Facebook Audience Network 导致 NullPointerException【英文标题】:Facebook Audience Network cause NullPointerException 【发布时间】:2015-05-05 13:12:25 【问题描述】:

我使用来自Facebook’s Audience Network 的广告在我的应用程序中遇到了很多崩溃。报告如下:

NullPointerException (@FBInterstitial:InitInterstitialAd:-1) 线程:主 异常:java.lang.NullPointerException 在 android.webkit.WebSettingsClassic.getDefaultUserAgentForLocale(WebSettingsClassic.java:453) 在 android.webkit.WebViewClassic$Factory.getDefaultUserAgent(WebViewClassic.java:1503) 在 android.webkit.WebSettings.getDefaultUserAgent(WebSettings.java:1280) 在 com.facebook.ads.a.s.a(未知来源) com.facebook.ads.a.s.a(未知来源)在 com.facebook.ads.a.j.(未知来源)在 com.facebook.ads.a.k.b(未知来源)在 com.facebook.ads.InterstitialAd.loadAd(来源不明)

它发生在mInterstitialAd.show();,其中mInterstitialAd 是facebook InterstitialAd 的实例,它调用InterstitialAd 类的show() 方法。

我还检查了mInterstitialAd 的可空性

  if (mInterstitialAd != null && mInterstitialAd.isAdLoaded()) 
      mInterstitialAd.show();
    

正如您在尝试展示新广告时看到的错误提示。有这个错误的人知道如何解决吗?

注意:我正在使用AudienceNetwork.jar 文件。从日志看来,s 类的方法a 中的错误(见下面的代码)在com.facebook.ads.a 包中(在jar 文件中可用。)

  // IntelliJ API Decompiler stub source generated from a class file
  // Implementation of methods is not available

package com.facebook.ads.a;

public class s 
    private static java.lang.String a;

    public static void a(android.webkit.WebView webView, android.webkit.WebViewClient webViewClient, com.facebook.ads.a.r r)  /* compiled code */ 

    public static void a(android.webkit.WebView webView)  /* compiled code */ 

    public static java.lang.String a()  /* compiled code */ 

    public static java.lang.String a(android.content.Context context, com.facebook.ads.a.o o)  /* compiled code */ 

    private static java.lang.String a(android.content.Context context, java.lang.String s, java.lang.String s1)  /* compiled code */ 

    @android.annotation.TargetApi(17)
    private static java.lang.String a(android.content.Context context)  /* compiled code */ 

编辑 将其初始化为

mInterstitialAd = new InterstitialAd(mContext, "FaceBookPlacementID");
mInterstitialAd.setAdListener(this);
mInterstitialAd.loadAd();

【问题讨论】:

NullPointer 表示你初始化了吗? 是的,mInterstitialAd.show(); 的空指针,我也解释了日志。 您使用的是什么版本的受众网络/SDK? @MingLi 我正在使用来自 SDK 版本 v4.1.0 的 jar 文件,并按照 developers.facebook.com/docs/audience-network/… 中给出的步骤进行操作 你解决了吗? 【参考方案1】:

看起来与这个问题非常相似:https://groups.google.com/forum/#!topic/google-admob-ads-sdk/SX9yb3F_PNk

但是我们可以在来自 SDK 的调用周围加上一个 try/catch,它具有回退以以不同的方式获取 UA。明天会出一个补丁。如果您在 4.1.1 中仍然发现问题,请报告。

【讨论】:

是的,没错。但是有什么解决办法,更新SDK请回复。 不幸的是,我认为您无法在 SDK 之外直接解决此问题,但 4.1.1 现已推出。如果您仍然看到问题,请告诉我:developers.facebook.com/docs/android 好的,我会用新的 sdk 版本更新我的应用程序,如果这个问题没有问题,我会接受。到那时 +1。 @JennyAbrahamson 他们是解决同一问题的任何方法吗?

以上是关于Facebook Audience Network 导致 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Audience Network 导致 NullPointerException

Facebook Audience Network:需要 Facebook 登录吗?

整合 Facebook Audience Network

原生 Facebook Audience Network 广告不可点击

Facebook Audience Network 频繁加载错误

在 Swift 中为 iOS 应用程序实现 Facebook Audience Network 广告