iOS上的Firebase分析事件未显示出来。

42

我正在测试由Google提供支持的Firebase,并已实现远程通知和崩溃报告。然而,在获取Analytics的数据方面,我遇到了一些严重的问题。

我使用 FIRAnalytics.logEventWithName(...) 跟踪事件并使用 FIRAnalytics.setUserPropertyString(...) 保存用户属性。无论我做什么,都没有任何数据显示在Firebase Analytics控制台中。

我确实收到了一些事件,但那些不是我发送的(例如 first_opensession_start)。此外,这些数据似乎需要很长时间才能出现。

此外,当我跟踪事件和保存用户数据时,我会收到以下提示:

Upload task scheduled to be executed in approx. (s): 3102.294599890709

这看起来非常奇怪 - Firebase 在等待近一个小时之后才尝试发送下一批数据,这一定是个bug,或者可以进行配置吗?当我等待了那么长的延迟后,数据被发送了...但是没有显示出来。


在Android中更新Firebase中的事件需要太长时间。可能每天只执行一次。 - CoolMind
10个回答

95

Firebase事件会被批量上传,以防止设备电池过度消耗。在iOS上,如果您在1小时上传前将应用程序转到后台,则事件将在后台在此时间分发。

您可以为iOS启用调试日志记录(https://firebase.google.com/docs/analytics/ios/events#view_events_in_the_xcode_debug_console),以查看何时在调试控制台中上传事件。

一旦事件上传完成,需要大约3个小时的延迟才能在Firebase分析仪表板中显示数据。此外,默认的日期范围不包括“今天”,因此您只能查看昨天的事件。如果要查看最新的事件,可以切换日期选择器以包括今天。

延迟/批量上传数据的主要原因是为了节省电池电量。每次使用网络时,设备移动网络调制解调器都会进入高功率模式,并在一段时间内保持此模式。如果网络被定期使用,它对电池寿命有严重影响。通过将上传批处理在一起并延迟上传,可以显着减少对电池的影响。


10
谢谢你澄清了这一点。作为 Google Analytics 用户,我已经习惯了实时分析,能够立即查看应用程序中用户正在进行的操作,特别是在开发过程中,以确保我的操作可以正确触发事件。昨天我尝试查找有关 Firebase 预期行为的信息,但没有找到任何信息。如果我只是有一个包含你刚给我的信息的小框,那么就可以节省我几个小时的时间去试图让它起作用......事实上,它已经按照预期运行了。我认为他们应该在调试时考虑实时上传。 - Daniel Saidi
2
是的,我们正在考虑在调试模式下进行实时上传。我不知道这可能何时可用。 - djabi
4
读完我的评论,我感觉自己像个娇生惯养的孩子。我真的是想给一些建设性的建议,但听起来好像在抱怨。不要误会——我非常兴奋能使用 Firebase 服务,期待着跟进你们并关注未来可能添加的任何更新! - Daniel Saidi
1
不,目前还没有。正如我在之前的评论中提到的,我们正在考虑添加实时支持,但目前还不可用。您为什么要控制批处理周期/间隔? - djabi
2
分析数据仍然不是实时的吗? - Shubham Ojha
显示剩余8条评论

32

在Swift中应该像这样:

FIRAnalytics.logEvent(withName: "SignUp", parameters: ["user_id": userid, "user_name": username])

要在 Firebase 中查看此事件:

  1. 转到 Firebase 控制台→分析选项卡
  2. 单击 DebugView 选项卡,您的事件将显示在那里

要在 Xcode 中查看此事件:

  1. 在 Xcode 中,选择 Product → Scheme → EditScheme
  2. 从左侧菜单中选择 Run
  3. 选择 Arguments 选项卡
  4. 在启动时传递的参数中添加 -FIRAnalyticsDebugEnabled

注意只有一个破折号!!

请注意,-FIRAnalyticsDebugEnabled 只有一个破折号。


2
请注意,-FIRAnalyticsDebugEnabled 前面只有一个破折号。 - Fattie
1
对于那些在查找DebugView选项卡时遇到困难的人,你需要在左侧边栏中向下滚动。这对我来说并不明显。 - Morgan

14
如果您在控制台上没有收到事件,则可能是因为您没有遵循命名约定。就像我所经历的那样,如果事件名称中有空格,则不会像以下内容一样显示在控制台上:
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

你可以观看这个教程以获取更多信息: 入门Firebase Analytics iOS:事件 - Firecasts


7

另一个要检查的事情是确保您在启动时传递的参数中的日志记录条目是正确的。它们应该以-开头,例如:

-FIRAnalyticsDebugEnabled

而不是
FIRAnalyticsDebugEnabled

那天我浪费了一个小时想知道为什么没有任何日志记录。


同样的问题,我的情况也是那个“破折号”导致的。我花了一整天的时间才弄清楚问题出在哪里。 - Dhaval H. Nena
呵呵,这太烦人了,我至少做了3次。 :) - crashoverride777
1
确实如此,但从现在开始,我会更加注意这些小问题。 - Dhaval H. Nena
2
现在实际上是“-FIRDebugEnabled”。 - Roman

2

React-Native App (IOS/Android)

我曾遇到同样的问题,debugView无法正常工作,streamView也出现了故障。 我发现测试事件的最佳方法是使用createPageEvent()来记录事件,并在后台运行应用程序以查看事件是否实时显示在firebase事件或streamView中(请参阅此文章以查看何时将事件发送到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}`)
    }

}

最初的回答是,在流视图中几乎实时显示的结果如下所示: enter image description here 现在,您可以开始构建漏斗等内容。

1

first_opensession_start被Firebase列为自动收集的事件

我无法帮助你解决自定义事件遇到的极端上传任务延迟问题...但Firebase Analytics还不到一周,可能只是他们这边的一个错误。

我发现这个StackOverflow问题提到了相同的调试行,但与Google App Measurement或旧版Google Mobile Analytics SDK有关。

此外,请注意Firebase控制台不会实时显示事件(来源):

您可以在Firebase控制台仪表板中查看有关事件的聚合统计信息。 这些仪表板每天定期更新。对于即时测试,请使用前面部分中描述的logcat输出。


3
延迟上传的主要原因是,一旦移动调制解调器进入高功率模式,它会保持那种状态一段时间(大约2分钟)。简单来说,每次唤醒网络都会减少设备电池大约2分钟的使用寿命。因此,如果您每2分钟唤醒一次网络,您的设备电池将只能持续约5小时。实时数据对电池寿命有严重影响。我们正在努力平衡实时传输数据和耗电之间的需求。大多数情况下,电池续航时间优先于实时性。这就是1小时上传批处理的主要原因。这不是一个错误。 - djabi

1

0

请确保您的设备未设置为省电模式。在此模式下,事件可能会积累并仅偶尔发送一次,即使您按照其他人所解释的方式在调试模式下运行 Firebase。


0

在Firebase中更新事件需要太长时间。可能是每天执行一次。请参见Firebase事件的iOSAndroid日志记录。

您可以启用详细日志记录以监视SDK记录事件的日志记录,以帮助验证事件是否正确记录。这包括自动记录和手动记录的事件。

您可以按以下方式启用详细日志记录:

  1. 在Xcode中,选择Product > Scheme > Edit scheme...
  2. 从左侧菜单中选择Run。
  3. 选择Arguments选项卡。
  4. 在Arguments Passed On Launch部分中添加-FIRAnalyticsDebugEnabled。

下次运行应用程序时,您的事件将显示在Xcode调试控制台中,帮助您立即验证事件是否已发送。


0
大多数人面临的最常见问题是,尽管一切正常工作,但Firebase无法记录事件。这是我在他们的文档中找到的内容。
如果您需要永久停用应用程序版本中的分析收集,请将FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED设置为YES,并将其添加到应用程序的Info.plist文件中。将FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED设置为YES优先于应用程序Info.plist中任何值以及使用setAnalyticsCollectionEnabled设置的任何值。
要重新启用收集,请从Info.plist中删除FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED。将FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED设置为NO没有效果,并导致与未在Info.plist文件中设置FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED相同的行为。
因此,您必须从google-servicesinfo.plist文件中删除FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED才能使分析工作。

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