Firebase 性能监控是不是捕获了 React Native Fetch API 发出的请求?
Posted
技术标签:
【中文标题】Firebase 性能监控是不是捕获了 React Native Fetch API 发出的请求?【英文标题】:Are requests made by React Native Fetch API captured by Firebase Performance Monitoring?Firebase 性能监控是否捕获了 React Native Fetch API 发出的请求? 【发布时间】:2018-01-10 05:06:46 【问题描述】:两天前,我在我的 React Native ios 项目中安装了 Firebase 性能监控。昨天和今天,我查看了 Firebase 控制台中的网络请求选项卡。仅出现了来自 graph.facebook.com、googleapis.com 和 google.com/gcm 的少数请求。 React Native 代码中 Fetch API 发出的任何 API 请求都没有显示出来。
我按照https://firebase.google.com/docs/perf-mon/get-started-ios 中的步骤 1-3 进行安装。以下是来自命令 pod install
的已安装 Pod 列表:
Using Alamofire (4.5.1)
Using CocoaLumberjack (3.3.0)
Using FLAnimatedImage (1.0.12)
Using Firebase (4.8.0)
Using FirebaseAnalytics (4.0.5)
Using FirebaseCore (4.0.13)
Using FirebaseInstanceID (2.0.8)
Using FirebaseMessaging (2.0.8)
Using FirebasePerformance (1.1.0)
Using FirebaseSwizzlingUtilities (1.0.0)
Using GTMSessionFetcher (1.1.12)
Using GoogleToolboxForMac (2.1.3)
Using Kingfisher (4.2.0)
Using NYTPhotoViewer (1.3.0)
Using Protobuf (3.5.0)
Using SVGKit (2.0.1)
Using nanopb (0.3.8)
我的应用总共发出了大约 50 个请求,从那时起已经过去了 2 天。这足以显示请求吗?性能监控不支持 React Native 中的 fetch API,还是需要任何额外的步骤才能使其正常工作?
【问题讨论】:
【参考方案1】:2 天过去了,请求终于开始出现在控制台中(即使它们还没有被分类)。所以这里是我的问题的答案:
问:React Native Fetch API 发出的请求是否被 Firebase 性能监控捕获? 答:是的
问:我的应用总共发出了大约 50 个请求,从那时起已经过去了 2 天。这足以显示请求吗?
答:可能还不够。我想我在 100 多个样本后开始看到请求。
问:性能监控不支持 React Native 中的 fetch API,还是需要任何额外的步骤才能使其正常工作?
答:性能监控确实支持 fetch API。无需额外步骤。唯一需要的就是经过足够的时间并收集到足够的样本。
【讨论】:
感谢您发布后续消息!一般来说,目前在控制台中反映跟踪大约有一天的延迟。对于网络请求,在将它们分解为单独的路径之前,还有最少数量的样本。见firebase.google.com/docs/perf-mon/…附注【参考方案2】:性能监控仅收集来自 iOS 上对 NSURLSession 和 NSURLConnection 的本机调用进行的 HTTP 调用的数据。显然 React Native 做了一些不同的事情来发出请求。
如果您想手动记录和收集有关HTTP请求的信息,您可以使用this native API。
【讨论】:
我看到this thread 声明 fetch API 在内部使用 NSURLSession。该声明是无效的还是有其他因素阻止请求被收集?以上是关于Firebase 性能监控是不是捕获了 React Native Fetch API 发出的请求?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React 应用程序中捕获 Firebase 通知?
React-redux-firebase:未捕获的错误:提供的 prop/s“调度”保留用于内部 firebaseConnect() 使用
React Firebase - 未捕获的异常signInWithEmailAndPassword,电子邮件必须是有效字符串