Java Facebook SDK Android在刷新时出现Logger NullPointerException
为了便于跟踪,我集成了当前针对Android v3.5的FacebookSDK。 您可以通过调用来跟踪应用程序安装 com.facebook.AppEventsLogger.activateApp(上下文,您的应用程序ID) 到目前为止没有问题,我可以看到这些事件显示在facebook仪表板上。 当涉及到跟踪事件或购买事件时,facebook建议执行以下操作:Java Facebook SDK Android在刷新时出现Logger NullPointerException,java,android,facebook,nullpointerexception,event-tracking,Java,Android,Facebook,Nullpointerexception,Event Tracking,为了便于跟踪,我集成了当前针对Android v3.5的FacebookSDK。 您可以通过调用来跟踪应用程序安装 com.facebook.AppEventsLogger.activateApp(上下文,您的应用程序ID) 到目前为止没有问题,我可以看到这些事件显示在facebook仪表板上。 当涉及到跟踪事件或购买事件时,facebook建议执行以下操作: m_fbAppEventsLogger = com.facebook.AppEventsLogger.newLogger(applica
m_fbAppEventsLogger = com.facebook.AppEventsLogger.newLogger(applicationcontext);
m_fbAppEventsLogger.logPurchase(BigDecimal.valueOf(4.99), Currency.getInstance("USD"));
似乎购买事件会立即刷新,从而导致
09-22 15:10:04.680: D/com.facebook.AppEventsLogger(31691): Caught unexpected exception while flushing: java.lang.NullPointerException
如果我尝试发送自定义事件,如果facebook SDK决定刷新其队列中的事件,则会发生相同的错误
我没有发现这种行为,因此非常感谢您的帮助。您应该添加
对于您的AndroidManifest.xml,我初始化Facebook SDK的方式与文档中给出的示例不同 Facebook建议您定义
元数据android:name=“com.facebook.sdk.ApplicationId
在AndroidManifest.xml
中,并在strings.xml
中为facebook\u app\u id
硬编码一个值。如果您使用的是源代码管理,那么这些文件通常会被检入,并且作为一般规则,我不喜欢将密钥提交到远程存储库
我使用gradle构建从外部文件中提取一个名为facebook\u app\u id
的字符串资源。然后,我在初始化facebook SDK时手动定义facebook\u app\u id
,而不是依赖库来查找它
初始化Facebook SDK
初始化Facebook SDK(支持跟踪安装事件):
初始化Facebook AppEventLogger
随后,我想记录一些。我可以看到Facebook Analytics正在成功跟踪我的安装事件。但是,每次尝试记录事件时,都会返回以下错误:
刷新时捕获到意外异常:
java.lang.NullPointerException
对我来说,解决方案是在我的方法调用中再次手动定义facebook\u app\u id
,以创建AppEventLogger。这为我解决了问题
AppEventsLogger.newLogger(application, application.getString(R.string.facebook_app_id));
另外:启用SDK调试:
在解决这个问题时,我发现从Facebook SDK获得更详细的日志非常有用。您可以使用以下代码对其进行配置:
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.REQUESTS);
此方法还有一个优点,即允许您为每种构建类型和/或风格使用不同的facebook应用程序id。这不会为我删除NPE。您使用的是哪种facebook Android SDK版本?这里还有一个id相同的常量:
AppEventsLogger.newLogger(getApplicationContext(),Consts.FACEBOOK\u APP\u id)代码>我面临同样的问题。你找到解决办法了吗
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.REQUESTS);