来自 iOS 的 Firebase Analytics 事件未显示
Posted
技术标签:
【中文标题】来自 iOS 的 Firebase Analytics 事件未显示【英文标题】:Firebase Analytics events from iOS not showing up 【发布时间】:2016-09-21 19:40:19 【问题描述】:我正在测试由 Google 提供支持的新 Firebase,并实施了远程通知和崩溃报告。但是,我在让 Analytics 工作时遇到了很多问题。
我使用FIRAnalytics.logEventWithName(...)
跟踪事件并使用FIRAnalytics.setUserPropertyString(...)
保存用户属性。但是,无论我做什么,Firebase 分析控制台中都不会显示任何数据。
嗯,我确实收到了一些事件,但不是我发送的(例如 first_open 和 session_start)。此外,这些数据似乎在很长一段时间后都会下降。
此外,当我跟踪事件并保存用户数据时,我会收到以下信息:
Upload task scheduled to be executed in approx. (s): 3102.294599890709
这看起来很奇怪 - Firebase 在尝试发送下一批数据之前等待了将近一个小时一定是一个错误,或者它是可配置的?当我等待极长的延迟时,数据已发送......但没有显示出来。
【问题讨论】:
在 android 中,更新 Firebase 中的事件需要花费太多时间。大概一天做一次吧。 【参考方案1】:在 Firebase 中更新事件需要太多时间。可能每天进行一次。请参阅 ios 或 Android Firebase 事件的日志记录。
您可以启用详细日志记录以监控 SDK 的事件日志记录 帮助验证事件是否被正确记录。这包括 自动和手动记录的事件。
您可以按如下方式启用详细日志记录:
在 Xcode 中,选择 Product > Scheme > Edit scheme... 从左侧菜单中选择运行。 选择“参数”选项卡。 在启动时传递的参数部分中,添加 -FIRAnalyticsDebugEnabled。
下次运行应用时,您的事件将显示在 Xcode 中 调试控制台,帮助您立即验证事件正在发生 已发送。
【讨论】:
【参考方案2】:确保您的设备未设置为省电模式。在这种模式下,事件可能会累积并偶尔发送一次,即使您按照其他人的说明在调试模式下运行 firebase。
【讨论】:
【参考方案3】:这里只是一个简单的说明:根据这个小视频https://www.youtube.com/watch?v=5pYdTgSkW5E你的模拟器玩完后你必须按下Xcode上的主页按钮,否则数据不会发送到服务器。
【讨论】:
【参考方案4】:要检查的另一件事是确保Arguments Passed on Launch
中的日志条目正确无误。他们应该以-
开头,例如
-FIRAnalyticsDebugEnabled
而不是
FIRAnalyticsDebugEnabled
前几天我浪费了一个小时想知道为什么什么都没有记录。
【讨论】:
Same here.. ONE DASH 也是我的问题。我花了一整天的时间才弄清楚出了什么问题。 嘿嘿,太烦人了,我至少做了3次。 :) 确实是这样。但是现在它会让我更加关注这些小问题。【参考方案5】:在 Swift 中应该是这样的:
FIRAnalytics.logEvent(withName: "SignUp", parameters: ["user_id": userid, "user_name": username])
在 Firebase 中查看此事件:
-
转到 Firebase 控制台 → 分析选项卡
点击DebugView选项卡;您的活动显示在那里
在 Xcode 中查看此事件:
-
在 Xcode 中,选择 Product → Scheme → EditScheme
从左侧菜单中选择运行
选择参数选项卡
在启动时传递的参数中,添加
-FIRAnalyticsDebugEnabled
只有一个破折号!!
请注意,-FIRAnalyticsDebugEnabled 前面只有 ONE 破折号。
【讨论】:
请注意,-FIRAnalyticsDebugEnabled 前面只有 ONE 破折号 对于找不到 DebugView 选项卡的任何人,您必须在左侧边栏中向下滚动。这对我来说并不明显。【参考方案6】:React-Native 应用程序(IOS/Android)
我遇到了同样的问题,debugView 无法正常工作,并且 streamView 出现了几次故障,我发现测试我的事件的最佳方法是使用我的 createPageEvent()
记录事件,然后 p>
重要的是在记录事件后将应用程序置于后台,它们将几乎实时显示在 firebase 事件或 streamView 中(查看 this article 以查看事件何时发送到火力基地)
事件仅在记录后 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中几乎是实时的->
现在您可以开始构建漏斗之类的东西了
【讨论】:
【参考方案7】:大多数人面临的最常见问题是,即使一切正常,firebase 也没有记录事件 这是我在文档中找到的
如果您需要在某个版本的应用中永久停用 Analytics 集合,请在应用的 Info.plist 文件中设置 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
。设置 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED to YES
优先于您应用的 Info.plist
中 FIREBASE_ANALYTICS_COLLECTION_ENABLED
的任何值以及使用 setAnalyticsCollectionEnabled 设置的任何值。
要重新启用收集,请从您的 Info.plist
中删除 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
。将FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
设置为NO
没有任何效果,并且会导致与在@987654330@ 中未设置FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
相同的行为。
因此,您必须从您的 google-servicesinfo.plist
文件中删除 FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED
才能使分析工作
【讨论】:
【参考方案8】:如果您没有在控制台中收到事件,可能是因为您没有遵循命名约定,正如我所经历的,如果事件名称中有空格,它将永远不会出现在控制台中,如下所示:
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
【讨论】:
【参考方案9】:Firebase 事件会一起批处理并每小时上传一次,以防止设备过度消耗电池电量。在 iOS 上,当您在 1h 上传目标之前后台应用程序时,此时将在后台调度事件。
您可以为 iOS (https://firebase.google.com/docs/analytics/ios/events#view_events_in_the_xcode_debug_console) 启用调试日志记录,以查看事件何时上传到调试控制台。
上传事件后,数据将在大约 3 小时后才会显示在 Firebase Analytics 信息中心内。此外,默认日期范围不包括“今天”,因此您只能看到昨天的事件。如果您想查看最新活动,可以将日期选择器切换为包括今天。
延迟/批量上传数据的主要原因是为了节省电池。每次使用网络时,设备移动网络调制解调器都会进入高功率模式并在此模式下停留一段时间。如果经常使用网络,则会严重影响电池寿命。通过将上传批处理并延迟上传,显着降低了对电池的影响。
【讨论】:
感谢您澄清这一点。作为一名 Google Analytics(分析)用户,我已经习惯了实时分析,以便能够看到人们现在在我的应用中正在做什么......尤其是在开发过程中,看到我的操作触发了事件正确。我昨天试图查找有关 Firebase 预期行为的信息,但没有找到任何信息。如果我有一个小盒子,里面装着你刚刚给我的信息,它会为我节省数小时试图让它工作的时间……而事实上它已经按预期运行了。我认为他们在调试时应该考虑实时上传。 是的,我们正在考虑在调试模式下实时上传。我没有时间可以使用它。 伙计,读我的评论,我听起来像个被宠坏的小子。我真的是想提出建设性的建议,但听起来我真的在发牢骚。不要误会我的意思 - 我对 Firebase 服务感到非常兴奋,并且非常期待关注您以及您可能添加的任何未来更新! 有什么方法可以设置这个批处理周期/间隔? 分析仍然不是实时的吗?【参考方案10】:first_open
、session_start
被 Firebase 列为 Automatically collected events。
对于您在自定义事件中遇到的极端上传任务延迟,我无法为您提供帮助。但 Firebase Analytics 还不到一周,这可能只是他们方面的一个错误。
我发现 this *** question 提到了相同的调试行,但与 Google App Measurement 或旧的 Google Mobile Analytics SDK 相关。
另外,请注意 Firebase 控制台不会实时显示事件 (source):
您可以在 Firebase 控制台信息中心查看有关您的事件的汇总统计信息。 这些仪表板全天定期更新。要立即进行测试,请使用上一节中所述的 logcat 输出。
【讨论】:
延迟上传的主要原因是一旦移动调制解调器进入高功率模式,它会保持这种状态一段时间(比如 2 分钟)。一种简单的思考方式是,每次唤醒网络时,设备的电池寿命都会缩短约 2 分钟。因此,如果您每 2 分钟唤醒一次网络,您的设备电池将持续约 5 小时。实时数据严重影响电池寿命。我们正在努力平衡实时消耗电池电量的需求。大多数时候,击球手的寿命胜过实时。这就是 1h 上传批处理的主要原因。不是错误。以上是关于来自 iOS 的 Firebase Analytics 事件未显示的主要内容,如果未能解决你的问题,请参考以下文章
如何限制 Firebase 云功能仅接受来自 Firebase 托管网站的请求