Unity 2022.3.14f1中Firebase LogEvent无法触发求助
Firebase Analytics自定义事件不显示问题排查与调试
一、快速开启实时调试模式(无需等待24小时)
要实时查看事件上报情况,按以下步骤开启Firebase Analytics调试模式:
- 找到Unity项目的Android包名:打开Unity编辑器,进入
Player Settings→Android→Package Name(格式类似com.yourteam.yourgame) - 确保测试设备通过USB连接电脑,执行
adb devices确认设备能被识别 - 在终端运行命令:
adb shell setprop debug.firebase.analytics.app 你的包名 - 重启应用后,打开Firebase控制台的
Analytics→DebugView,即可实时看到所有触发的事件(包括自定义事件)
二、代码问题排查与优化
1. 移除手动触发的自动事件
first_open是Firebase自动触发的首次安装启动事件,无需手动调用FirebaseAnalytics.LogEvent("first_open");,重复调用可能导致统计异常,建议删除代码中所有手动触发该事件的语句。
2. 规范事件名称
Firebase Analytics建议事件名使用小写字母+下划线格式(如game_start而非GameStart),避免大写字母或特殊字符,部分大小写混合的名称可能无法被控制台正常识别。
3. 确保初始化完成后再上报事件
Firebase初始化是异步操作,Start方法可能在初始化完成前执行,导致事件无法正常发送。优化方案:
- 添加全局标记位跟踪初始化状态
- 将事件上报逻辑移至初始化完成的回调中
优化后的代码示例:
using System.Collections; using System.Collections.Generic; using UnityEngine; using Firebase.Extensions; using Firebase.Analytics; public class Analytics : MonoBehaviour { private bool _isFirebaseReady = false; private void Awake() { Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance; FirebaseAnalytics.LogEvent("test_event"); FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventAppOpen); _isFirebaseReady = true; Debug.Log("FBReady"); // 初始化完成后发送启动事件 SendLaunchEvents(); } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}", dependencyStatus)); } }); } private void SendLaunchEvents() { FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventAppOpen); FirebaseAnalytics.LogEvent("game_start"); // 修正为规范命名 FirebaseAnalytics.LogEvent("test_event"); FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart); Events(); } public void EventTriggerTest() { if (!_isFirebaseReady) return; FirebaseAnalytics.LogEvent("test_event"); // 修正命名 Debug.Log("EventWasLoged"); } public void EventTriggerTest(int number) { if (!_isFirebaseReady) return; FirebaseAnalytics.LogEvent("test_event_param", new Parameter[] { new Parameter("button_number", number) // 参数名也建议小写下划线 }); Debug.Log("EventParamWasLoged"); } public void Events() { if (!_isFirebaseReady) return; Firebase.Analytics.FirebaseAnalytics.LogEvent( Firebase.Analytics.FirebaseAnalytics.EventSelectContent, new Firebase.Analytics.Parameter( Firebase.Analytics.FirebaseAnalytics.ParameterItemId, "0"), new Firebase.Analytics.Parameter( Firebase.Analytics.FirebaseAnalytics.ParameterItemName, "name"), new Firebase.Analytics.Parameter( Firebase.Analytics.FirebaseAnalytics.UserPropertySignUpMethod, "Google"), new Firebase.Analytics.Parameter( "user_id", "0")); } }
三、其他注意事项
- 调试模式开启后,需在Firebase控制台的DebugView中选择对应的测试设备(设备名称会显示在列表中)
- 确保测试设备有稳定网络连接,调试模式下事件会实时上传
- 若调试模式下仍无法看到事件,可通过
adb logcat | grep FirebaseAnalytics查看设备系统日志,排查事件发送情况
内容的提问来源于stack exchange,提问作者Max_B
相关产品推荐
相关产品推荐

