手动追踪屏幕时无法覆盖Firebase screen_view参数报错
报错根因
Firebase Analytics 对所有以firebase_为前缀的参数做了保留限制,不允许开发者在自定义埋点中手动传入、覆写这类内置参数。你看到的报错是SDK的内置拦截逻辑触发的——手动上报屏幕视图事件时,直接把firebase_screen、firebase_screen_class作为自定义参数传入了logEvent方法,这两个字段都属于保留前缀的内置参数,会被SDK直接拦截丢弃,无法上报成功。
正确手动实现屏幕追踪的方法
不要在通用事件上报方法里手动拼接firebase_开头的屏幕参数,使用SDK提供的专属屏幕设置API即可,SDK会自动填充对应的内置保留字段,不会触发保留字报错:
- Android 端实现
调用FirebaseAnalytics实例的setCurrentScreen方法,传入对应参数即可,示例代码:FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(context); // 入参依次为:当前页面Activity实例、自定义屏幕名称、自定义屏幕类名 analytics.setCurrentScreen(currentActivity, "order_pay_page", "PayActivity", null); - iOS 端实现
调用Analytics的setScreenName:screenClass:方法即可,示例代码:Analytics.setScreenName("order_pay_page", screenClass: "PayViewController") - 规则说明
- 自定义的屏幕名、类名不需要加
firebase_前缀,SDK内部会自动映射到对应的内置参数字段 - 屏幕名称长度不能超过40字符,仅支持字母、数字、下划线,首字符必须为字母
- 调用该API设置屏幕后,后续所有上报的事件都会自动携带当前设置的屏幕参数,不需要在每个事件里重复附加
- 所有
firebase_前缀的内置参数都有对应的专属设置API,永远不要尝试在自定义事件参数列表里直接传入这类保留字段
- 自定义的屏幕名、类名不需要加
触发的拦截日志属于SDK正常校验逻辑:
E/FA (22878): Name starts with reserved prefix. Type, name: event param, firebase_screen E/FA (22878): Name starts with reserved prefix. Type, name: event param, firebase_screen_class替换为专属API调用后,该报错会消失,屏幕数据也会正常同步到Firebase Analytics后台。
内容的提问来源于stack exchange,提问作者BlueLighthouse
相关产品推荐
相关产品推荐

