所有开源包
工具Swift

iOSDevelopmentTools

在 app 内置的控制台中查看网络请求、日志和设备状态,敏感信息会被遮蔽

4星标数最新版本: v2.0.0 · 更新时间: 2026年10月15日
支持平台:iOS 17macOS 14

许可证: MIT

一个面向 iOS 17+ 和 macOS 14+、无依赖的 Swift package,记录 app 通过 URLSession 发出的请求、保存日志消息并收集设备报告,并在一个 SwiftUI 控制台中展示这三类信息;该控制台可通过摇一摇、按钮或窗口打开。密码、token、cookie 和 API key 在存储前就会被替换,请求可以导出为 cURL 命令或 HAR 文件。它面向调试和测试构建,并按 Swift 6 严格并发编写。

功能特性

  • 一行代码即可记录:NetworkCapture.start() 会记录 URLSession.shared,以及之后由 default 或 ephemeral configuration 创建的每一个 session;响应原样传递给 app
  • 存储前进行遮蔽:无论字段名的拼写方式如何,敏感名称对应的 header、query、form、multipart 和 JSON 值都会被替换;无法检查的结构化 body 会被隐去
  • 存储有边界:默认最多保存 500 个请求、每个 body 最多 256 KiB,日志消息存放在环形缓冲区中,超过 4 MiB 的上传以流式处理而非整体复制
  • 可将任意请求导出为对 shell 安全的 curl 命令,也可将任意请求列表导出为 HTTP Archive(HAR 1.2)
  • LogStore 保存带级别和分类的日志消息,同时写入统一日志系统;DeviceSnapshot 报告版本号、操作系统、机型、内存占用、热状态和调试器状态
  • SwiftUI 控制台包含 Network、Logs 和 Device 三个标签,支持搜索、筛选和分享菜单;可通过摇一摇(iOS)、按钮或在 macOS 窗口中打开
  • 148 个 Swift Testing 测试;请求从 app 的 session 经过抓取流程到达一个 stub 服务器,测试会检查服务器收到了什么、app 收到了什么,以及被存储下来的是什么
  • 包含 4 篇文章的 DocC catalog,以及面向 iOS 和 macOS 的 DevToolsDemo 示例 app

快速开始

swift
1@main
2struct MyApp: App {
3 init() {
4 #if DEBUG
5 NetworkCapture.start()
6 #endif
7 }
8 
9 var body: some Scene {
10 WindowGroup {
11 ContentView()
12 #if DEBUG
13 .devToolsConsoleOnShake()
14 #endif
15 }
16 }
17}

安装

Xcode (File › Add Package Dependencies…)

text
1https://github.com/muhittincamdali/iOSDevelopmentTools.git

Swift Package Manager

swift
1.package(url: "https://github.com/muhittincamdali/iOSDevelopmentTools.git", from: "2.0.0")

截图

Network 标签列出了示例 app 发出的 7 个真实请求:一个访问未知主机失败的请求、一个 503、一个 404,以及 4 个成功请求,均显示耗时和大小
在控制台中打开的一个登录请求:Authorization header 和 JSON body 中的密码都显示为 [REDACTED]
Logs 标签显示了示例 app 的 info、warning 和 error 消息,每条都带有分类、时间和源码行号
Device 标签显示 app 版本、iOS 版本、模拟机型、内存、app 内存、热状态、低电量模式和调试器状态

时间线

  1. 仓库开放,包含 network、storage、analytics、debug 和 utility 模块

  2. 打上 v1.0.0 标签:一个基于 Alamofire 构建的网络客户端,加上分五个模块实现的 storage、analytics 和 logging manager

  3. 简化:1.0.0 的模块被移除,替换为占位代码

  4. v2.0.0:从零重建为一个应用内网络检查器、日志控制台和设备报告,加入了遮蔽功能、DocC 和一个示例 app

相关链接

相关文章

阅读文章 (English)