集成Firebase Performance后NSURLSession请求无回调问题求助
我之前也碰到过一模一样的情况,大概率是Firebase Performance的网络拦截逻辑和你的NSURLSession配置发生了冲突。给你几个实用的排查和解决方向:
检查NSURLSession的自定义配置
Firebase Performance会自动拦截NSURLSession请求来收集性能数据,但如果你的session用了自定义delegate或者修改过configuration(比如自定义protocolClasses),很容易和Firebase的拦截逻辑撞车。你可以先暂时移除这些自定义配置,看看请求是否恢复正常,再逐步排查具体的冲突点。延迟启用Firebase Performance监控
不一定非要在[FIRApp configure]之前直接禁用,你可以先关闭监控,等App初始化完成、所有必要的NSURLSession都设置好之后,再手动开启:// 先禁用监控,避免初始化阶段冲突 [[FIRPerformance sharedInstance] setInstrumentationEnabled:NO]; [FIRApp configure]; // 在App启动流程的末尾或者某个初始化完成的回调里开启监控 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [[FIRPerformance sharedInstance] setInstrumentationEnabled:YES]; });这样既能保留性能监控功能,又能避开初始化阶段的冲突问题。
排除特定URL的监控
如果只有部分请求出问题,可以把这些请求的URL加入Firebase的排除列表,不让它拦截这些请求:FIRPerformanceConfiguration *config = [FIRPerformanceConfiguration sharedInstance]; [config setURLFilter:^BOOL(NSURL * _Nonnull url) { // 返回YES表示监控该URL,NO则跳过监控 return ![url.absoluteString containsString:@"你的异常请求域名/路径"]; }]; [FIRApp configure];这种方式可以精准跳过有问题的请求,不影响其他请求的性能数据收集。
更新Firebase SDK版本
旧版本的Firebase Performance确实存在一些NSURLSession拦截的兼容性bug,建议把所有Firebase相关的SDK都更新到最新稳定版,很多这类问题在新版本里已经被修复了。
另外,你可以打开Xcode的控制台,搜索FirebasePerformance相关的日志输出,有时候会有冲突或错误的提示信息,能帮你更快定位问题根源。
内容的提问来源于stack exchange,提问作者Dmitriy Kurkin

