簡體   English   中英

關於flush的Facebook SDK Android AppEventsLogger NullPointerException

[英]Facebook SDK Android AppEventsLogger NullPointerException on flush

我整合了當前用於Android v3.5的FacebookSDK以進行跟蹤。 您可以通過調用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決定刷新其隊列中的事件,則會發生同樣的錯誤。

我沒有發現任何這種行為,所以任何幫助都將非常感激。

你應該將<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>到你的AndroidManifest.xml中

我對Facebook SDK的初始化與其文檔中給出的示例不同。

Facebook建議您在AndroidManifest.xml定義meta-data android:name="com.facebook.sdk.ApplicationId ,並在strings.xmlfacebook_app_id的值進行硬編碼。如果您使用源代碼控制,則通常會檢入這些文件,並且一般規則,我不喜歡將我的密鑰提交給遠程存儲庫。

我使用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正在成功跟蹤我的安裝事件。 但是,每次我嘗試記錄事件時都會返回以下錯誤:

刷新時捕獲意外異常: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的優點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM