FNMNetworkMonitor 是一个 Swift iOS 网络框架,可用于监控 iOS 应用程序的网络。它可以轻松地进行网络调试,让您可以查明应用程序中与网络相关问题的根本原因,并通过电子邮件共享这些请求。它还可以模拟网络请求,从而更容易使用不完整的 API 或为单元测试建模特定状态。
支持 Swift 5 并且桥接到 Obj-C 兼容。
预览
pod 'FNMNetworkMonitor'
添加到您的 Podfile
FNMNetworkMonitor.registerToLoadingSystem()
FNMNetworkMonitor.shared.startMonitoring()
let sessionConfig = URLSessionConfiguration.ephemeral
sessionConfig.protocolClasses = FNMNetworkMonitor.normalizedURLProtocols()
self.customSession = URLSession(configuration: sessionConfig)
FNMNetworkMonitor.shared.startMonitoring()
let request = FNMProfileRequest(urlPattern: .dynamicPattern(expression: "*farfetch.*robots"))
let profiles = [FNMProfile(request: request,
responses: [request.response(statusCode: 200,
headers: [ "Content-Type": "application/json" ],
responseHolder: .keyValue(value: [ "FieldA": 1 ])
delay: 0.25)])]
FNMNetworkMonitor.shared.configure(profiles: profiles)
FNMNetworkMonitor.shared.startMonitoring()
您还可以使用以下方法忽略域名
FNMNetworkMonitor.shared.configure(ignoredDomains: ["somedomain.com"])
这将不会记录或拦截此域名的请求。
您还可以为每个 profile 分配优先级值,以便在发生冲突时,将使用具有最高优先级的 profile。 优先级是一个 UInt,其中 0 是最高优先级,而 UInt.max 是最低优先级。
let request = FNMProfileRequest(urlPattern: .dynamicPattern(expression: "*farfetch.*robots"))
let profiles = [FNMProfile(request: request,
responses: [request.response(statusCode: 200)],
priority: 123)]
请确保遵循步骤 1、2 或 3,具体取决于运行该特定请求的 URLSession。
存在一个调试 UI,可用于轻松检查和导出网络
FNMNetworkMonitor.shared.showDebugListingViewController(presentingNavigationController: self.navigationController)
通常,摇晃手势是显示/隐藏调试视图的好方法。
此外,可以应用不同的日志级别来查看请求如何在监视器中导航
FNMNetworkMonitor.shared.logScope = [.export, .profile, .urlProtocol]
最后,您可以打开被动导出,请求将被导出到 Documents 应用程序文件夹中的一个 json 文件中。
FNMNetworkMonitor.shared.passiveExportPreference = FNMRecordExporterPreference.on(setting: .unlimited)
如果您想在使用网络监视器时分配更少的内存,您可以禁用媒体有效负载记录
FNMNetworkMonitor.shared.recordMediaPayload(false)
该项目包含一个示例应用程序,您可以在其中测试该工具。 您可以在 NetworkMonitor.xcworkspace
中运行 Sample Target Scheme 以查看框架的工作示例。
阅读 贡献指南
通过向我们发送您的贡献,您同意您的贡献受我们的贡献者所有权声明条款的约束
维护者列表
FNMNetworkMonitor 在 MIT 许可证下发布。 有关更多详细信息,请参见 LICENSE 文件。