我正在测试新的Google支持的Firebase,并实施了远程通知和崩溃报告。但是,我在使用Analytics工作时遇到了很多问题。
我使用FIRAnalytics.logEventWithName(...)
跟踪事件,并使用FIRAnalytics.setUserPropertyString(...)
保存用户pproperties。但是,无论我做什么,Firebase Analytics控制台中都不会显示任何数据。
好吧,我确实收到了一些活动,但这些活动并非由我发送(例如 first_open 和 session_start )。此外,这些数据似乎在很长一段时间后都会出现。
此外,当我跟踪事件并保存用户数据时,我会收到以下信息:
Upload task scheduled to be executed in approx. (s): 3102.294599890709
这看起来很奇怪 - Firebase在尝试发送下一批数据之前等待差不多一个小时必须是一个bug,还是可以配置?当我等待那么长时间的延迟时,数据被发送......但是没有显示出来。
答案 0 :(得分:54)
Firebase事件一起批处理并每小时上传一次,以防止设备过度耗尽电池电量。在iOS上,当您在1h上传目标之前对应用程序进行后台处理时,此时将在后台调度事件。
您可以启用iOS的调试日志记录(https://firebase.google.com/docs/analytics/ios/events#view_events_in_the_xcode_debug_console),以查看何时在调试控制台中上传事件。
上传事件后,大约3小时会有延迟,之后数据会显示在Firebase Analytics信息中心中。此外,默认日期范围不包括"今天"所以你只能看到昨天的事件。如果您想查看最新活动,可以将日期选择器切换到今天。
延迟/批量上传数据的主要原因是节省电池电量。每次使用网络时,设备移动网络调制解调器都处于高功率模式并保持此模式一段时间。如果经常使用网络,则会对电池寿命造成严重影响。通过将上传批量合并并延迟上传,可以显着降低对电池的影响。
答案 1 :(得分:15)
在Swift中应该是这样的:
FIRAnalytics.logEvent(withName: "SignUp", parameters: ["user_id": userid, "user_name": username])
要在Firebase中查看此事件:
要在Xcode中查看此事件:
-FIRAnalyticsDebugEnabled
答案 2 :(得分:9)
如果您没有在控制台中接收事件,可能是因为您没有遵循命名约定,正如我所经历的那样,如果事件名称中有空格,它将永远不会出现在控制台中,如下所示:
mFirebaseAnalytics.logEvent("Add Camera", bundle);
但当您删除以下空格时:
mFirebaseAnalytics.logEvent("Add_Camera", bundle);
现在,您将在大约3小时后在控制台中看到事件。 在以下情况下,应用程序将数据分发到控制台:
1- Data is more than an hours old
2- App goes into the background
您可以观看本教程以获取更多信息: Getting Started with Firebase Analytics on iOS: Events - Firecasts
答案 3 :(得分:1)
first_open
,session_start
被Firebase列为Automatically collected events。
我无法帮助您解决在自定义事件中遇到的极端上传任务延迟问题..但Firebase Analytics不到一周的时间,可能只是他们身边的错误。
我发现this StackOverflow question提到了相同的调试行但与Google App Measurement或旧的Google Mobile Analytics SDK相关。
另请注意,Firebase控制台无法实时显示事件(source):
您可以在Firebase控制台信息中心中查看有关您的活动的汇总统计信息。 这些信息中心会在一天内定期更新。要立即测试,请使用上一节中描述的logcat输出。
答案 4 :(得分:1)
React-Native App(IOS / Android)
我遇到了同样的问题,debugView无法正常工作,并且streamView出现故障几次,我发现测试我的事件的最佳方法是使用createPageEvent()
进行logEvents然后
重要的是在记录事件后将应用程序置于后台,它们将在firebase事件或streamView中几乎实时显示(检查this article以查看事件何时发生发送到Firebase)
事件仅在记录后1小时后发送,或者如果您将应用置于后台则立即发送。
import firebase, { RNFirebase } from 'react-native-firebase';
export default class AnalyticsService {
static async initialize() {
firebase.analytics().setAnalyticsCollectionEnabled(true);
}
static async createPageEvent(screen: string) {
firebase.analytics().setCurrentScreen(screen)
firebase.analytics().logEvent(`open_${screen}`)
}
}
结果几乎是实时在streamView中->
现在您可以开始构建渠道和内容
答案 5 :(得分:0)
这里只是一个简单的注释:根据这个小视频https://www.youtube.com/watch?v=5pYdTgSkW5E播放模拟器后你需要按Xcode上的主页按钮,否则数据将不会被发送到服务器。
答案 6 :(得分:0)
大多数人面临的最常见问题是,即使一切工作正常,firebase也不记录事件 这就是我在文档中找到的
如果您需要在某个版本的应用中永久停用Google Analytics(分析)集合,请在应用的Info.plist文件中设置FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
。设置FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
优先于应用程序FIREBASE_ANALYTICS_COLLECTION_ENABLED
中Info.plist
的任何值以及使用setAnalyticsCollectionEnabled设置的任何值。
要重新启用收藏集,请从您的FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
中删除Info.plist
。将FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
设置为NO
无效,其行为与未在FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
中设置Info.plist file
相同。
因此,您必须从FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
文件中删除google-servicesinfo.plist
才能使分析工作
答案 7 :(得分:0)
要检查的另一件事是确保在“启动时传递的参数”中的日志记录条目正确。它们应以短划线开头,例如
-FIRAnalyticsDebugEnabled
而不是
FIRAnalyticsDebugEnabled
前几天我浪费了一个小时,想知道为什么什么都没记录。
答案 8 :(得分:0)
确保您的设备未设置为省电模式。在这种模式下,即使您按照其他人的说明在调试模式下运行firebase,事件也可能仅偶尔积累和发送一次。
答案 9 :(得分:0)