[英]Android – Facebook SDK AppEventsLogger logEvent doesn't work
[英]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.xml
對facebook_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.