Firebase分析不跟踪我的应用程序屏幕的名称:屏幕名称(未设置)

4
我是使用最新版的Firebase和Analytics来跟踪应用程序中的屏幕打开情况。我在Firebase上检查屏幕打开情况,但它们只在“屏幕类”表格下显示活动Java类名称。如果我切换到“屏幕名称”,则会显示“(未设置)”。没有跟踪到任何屏幕名称。
我尝试了官方文档和Stack Overflow上提供的两种方法:
方法1:
mFirebaseAnalytics.setCurrentScreen(SectionManager.getInstance().getCurrentActivity(), name, null /* class override */);

方法二:

Bundle params = new Bundle();
params.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, "screen");
params.putString(FirebaseAnalytics.Param.ITEM_NAME, name);
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.VIEW_ITEM, params);

我仔细检查了name变量,确保它包含屏幕的真实名称。
这些方法都不起作用。我似乎无法解决它,无论是查看其他问题还是检查官方文档。

2
你在Activity的生命周期方法中调用了setCurrentScreen()吗?是哪一个方法?我在文档中注意到:屏幕名称和屏幕类保持不变,直到Activity更改。 - Bob Snyder
@BobSnyder 是的,我是在执行startActivity调用之前打电话的,但是..这有问题吗?那为什么要注册事件呢? - NullPointerException
正如您所看到的,他们并没有告诉您在活动事件中跟踪它:“如果您的应用程序不使用单独的活动来跟踪每个屏幕(例如在游戏中),则手动跟踪屏幕非常有用。” - NullPointerException
还有这个:"屏幕名称和屏幕类在 Activity 更改或您对 setCurrentScreen() 进行新调用之前保持不变。" - NullPointerException
3
在看到这个问题之前,我从未使用过setCurrentScreen()。作为一个实验,我把它添加到了一个活动的onResume()中。我发现我分配的屏幕名称包含在 Analytics logcat 消息中,而且经过一段时间(12小时以上),该名称出现在 Firebase 控制台的screen_view事件数据中。 - Bob Snyder
1
setCurrentScreen() 事件应该仅从 onResume() 方法中推送。否则,报告中将不会显示屏幕名称,而只会显示屏幕的类名。 - Apurva
1个回答

0

看起来你忘了初始化mFirebaseAnalytics,你需要在onCreate方法中先进行初始化,并确保在此初始化之后调用mFirebaseAnalytics.logEvent(..),请查看如何在每个屏幕上进行初始化。

// [START declare_analytics]
private FirebaseAnalytics mFirebaseAnalytics;
// [END declare_analytics]

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

       // here the initialization of instance
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
}

请告诉我这个答案是否对您有用,或者您也可以在问题中更新代码片段,以便我可以对此问题进行适当的分析,谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接