关于 swift-networking
面向 Swift 开发者的 Apple Network.framework 网络技能,涵盖 TCP、UDP 和 QUIC 连接设置、生命周期处理、迁移与故障排查。
主要功能
- 01选择 TCP、UDP 或 QUIC
- 02设置 NWConnection 并管理生命周期
- 03NetworkConnection async/await 指导
- 04发送和接收数据并处理错误
- 05网络切换与重试指导
适用场景
- 01构建自定义协议或 UDP 网络功能
- 02管理连接状态与故障
- 03从套接字或 URLSession 迁移
- 04排查超时与 TLS 故障
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ johnrogers/ claude-swift-engineering --skill swift-networking安装后在 Claude Code 中输入/swift-networking确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/connection-states.mdgetting-started.mdios26-networking.mdmigration.mdtroubleshooting.md详细介绍
Swift Networking
Network.framework 是 Apple 的现代网络 API,用于 TCP/UDP 连接。它以智能连接建立、用户空间网络和无缝移动性处理取代 BSD 套接字。
参考资料加载指南
只要有一丝可能需要用到相关内容,就务必加载参考文件。 宁可多掌握上下文,也不要错过模式或犯错。
| 参考资料 | 加载时机 |
|---|---|
| 入门指南 | 设置用于 TCP/UDP 的 NWConnection、选择 API |
| 连接状态 | 处理 .waiting、.ready、.failed 状态转换 |
| iOS 26+ 网络 | 使用支持 async/await 的 NetworkConnection、TLV 分帧、Coder 协议 |
| 迁移指南 | 从套接字、CFSocket、SCNetworkReachability、URLSession 迁移 |
| 故障排查 | 调试超时、TLS 故障和连接问题 |
核心工作流
- 根据使用场景选择传输方式(TCP/UDP/QUIC)
- 创建 NWConnection(iOS 12+)或 NetworkConnection(iOS 26+)
- 设置连接生命周期的状态处理程序
- 在适当的队列上启动连接
- 正确处理错误,发送和接收数据
- 处理网络切换(WiFi 到蜂窝网络)
何时使用 Network.framework,而非 URLSession
- URLSession:HTTP、HTTPS、WebSocket、简单的 TCP/TLS 流
- Network.framework:UDP、自定义协议、底层控制、点对点、游戏
常见错误
-
忽略状态处理程序 — 创建 NWConnection 却不设置状态变更处理程序,就无法得知连接何时就绪或失败。务必先实现状态处理程序。
-
阻塞主线程 — 切勿在主队列上调用
receive()。所有网络操作都应使用后台 DispatchQueue 或 Task。 -
选择了错误的队列 — 使用错误的队列(例如用 UI 队列处理网络任务,或用串行队列进行并发读取)会导致死锁或无声失败。务必明确选择队列。
-
未处理网络切换 — WiFi/蜂窝网络切换或网络丢失不一定会被自动检测到。实现可用性检查和状态监控,确保应用健壮可靠。
-
错误恢复不当 — 网络错误需要带退避机制的重试逻辑。遇到瞬时错误(超时、临时断连)就立即失败,会导致糟糕的用户体验。
评论
支持 Markdown