java - 刷新时 Facebook SDK Android AppEventsLogger NullPointerException

标签 java android facebook nullpointerexception event-tracking

我集成了当前的 FacebookSDK for Android v3.5 用于跟踪目的。 您可以通过调用跟踪应用程序安装 com.facebook.AppEventsLogger.activateApp(context, YOUR_APP_ID);

到目前为止没有问题,我可以看到这些事件显示在 facebook 仪表板上。 在跟踪事件或购买事件方面,Facebook 建议执行以下操作:

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 决定刷新其队列中的事件,则会发生相同的错误。

我没有发现任何关于此行为的信息,因此将不胜感激任何帮助。

最佳答案

我初始化 Facebook SDK 的方式与他们文档中给出的示例不同。

Facebook 建议您在 AndroidManifest.xml 中定义 meta-data android:name="com.facebook.sdk.ApplicationId 并为 facebook_app_id 硬编码一个值strings.xml 中。如果您使用源代码管理,通常会 checkin 这些文件,并且作为一般规则,我不喜欢将我的 key 提交到远程存储库。

我使用我的 gradle 构建从外部文件中提取了一个名为 facebook_app_id 的字符串资源。然后,我在初始化 Facebook SDK 时手动定义 facebook_app_id,而不是依赖库来查找它。

初始化 Facebook SDK

初始化 Facebook SDK(启用安装事件跟踪):

private void initialiseFacebook(Application application) {
        FacebookSdk.sdkInitialize(application);
        AppEventsLogger.activateApp(application, application.getString(R.string.facebook_app_id));
}

初始化 Facebook AppEventsLogger

随后,我想记录一些 Facebook App Events .我可以看到 Facebook Analytics 成功跟踪了我的安装事件。但是,我每次尝试记录事件时都会返回以下错误:

Caught unexpected exception while flushing: java.lang.NullPointerException

对我来说,解决方案是在我的方法调用中再次手动定义 facebook_app_id 以创建 AppEventsLogger。这为我解决了问题。

AppEventsLogger.newLogger(application, application.getString(R.string.facebook_app_id));

另外:启用 SDK 调试:

我发现在解决此问题时从 Facebook SDK 获取更详细的日志非常有帮助。您可以使用以下代码对其进行配置:

FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.REQUESTS);

此方法还具有让您为每种构建类型和/或风格使用不同的 facebook_app_id 的优势。

关于java - 刷新时 Facebook SDK Android AppEventsLogger NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18917970/

相关文章:

java - MessagingException 期间folder.getMessages() 的行为

java - 如何在 Java-Doc 中创建链接?

android - 在哪里可以找到新功能弃用的 Android 功能列表?

java - 为什么我的 recyclerview 适配器不起作用?/为什么该类没有运行?

facebook - 如何在用户墙上发布图库图像

java - Jsoup:在无 CSS 的 HTML 中提取两个 block 之间的所有 HTML

java - 为什么身份映射器会出现内存不足的情况?

android - 同时部署 Mobile 和 Wear

android - Facebook 与 android studio 共享

facebook - 一站式社交oauth/登录按钮