Alamofire 5.9.1

Alamofire 5.9.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2024年3月
SPM支持 SPM

Christian NoonKevin HarwoodJon Shier 维护。



Alamofire 5.9.1

  • Alamofire 软件基金会

Alamofire: Elegant Networking in Swift

Swift Platforms CocoaPods Compatible Carthage Compatible Swift Package Manager Twitter Swift Forums

Alamofire 是用 Swift 编写的 HTTP 网络库。

特性

  • 可链式请求/响应方法
  • Swift并发支持从iOS 13、macOS 10.15、tvOS 13、watchOS 6开始。
  • Combine支持
  • URL/JSON参数编码
  • 上传文件/数据/流/多部分表单数据
  • 使用请求或暂停数据下载文件
  • 使用进行身份验证
  • HTTP响应验证
  • 带有进度条的上传和下载进度闭包
  • cURL命令输出
  • 动态适配并重试请求
  • TLS证书和公钥固定
  • 网络可达性
  • 全面的单元和集成测试覆盖
  • 完整文档

组件库

为了使Alamofire专注于核心网络实现,Alamofire软件基金会创建了额外的组件库,以向Alamofire生态系统添加更多功能。

  • AlamofireImage - 一个包含图像响应序列化器、UIImageUIImageView扩展、自定义图像过滤器、自动清除内存缓存的图像库和基于优先级的图像下载系统。
  • AlamofireNetworkActivityIndicator - 通过Alamofire控制iOS上网络活动指示器的可见性。它包含可配置的延迟定时器,有助于减轻闪烁并支持由Alamofire管理的URLSession实例。

要求

平台 最低Swift版本 安装 状态
iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+ 5.5 CocoaPodsCarthageSwift Package Manager手动 全面测试
Linux 最新版本 Swift Package Manager 构建但不受支持
Windows 最新版本 Swift Package Manager 构建但不受支持

Linux和Windows上的已知问题

Alamofire在Linux和Windows上可以构建,但是底层swift-corelibs-foundation缺少许多功能,并存在许多问题,这阻碍了完全功能,并可能导致崩溃。这些问题包括:

  • ServerTrustManager及其相关证书功能不可用,因此没有证书固定并且不支持客户端证书。
  • 各种HTTP身份验证方法可能会崩溃,包括HTTP基本和HTTP摘要。如果响应包含服务器挑战,可能会发生崩溃。
  • 通过CachedResponseHandler及其相关API的缓存控制不可用,因为底层代理方法没有被调用。
  • URLSessionTaskMetrics永远不会收集。

由于这些问题,Alamofire不支持Linux和Windows。请将任何崩溃报告给Swift问题报告器

迁移指南

沟通

安装

CocoaPods

CocoaPods 是一款 Cocoa 项目依赖管理工具。有关用法和安装指南,请访问其网站。要在使用 CocoaPods 的 Xcode 项目中集成 Alamofire,请在您的 Podfile 中指定它。

pod 'Alamofire'

Carthage

Carthage 是一款去中心化的依赖管理工具,可以构建您的依赖并提供二进制框架。要在使用 Carthage 的 Xcode 项目中集成 Alamofire,请在您的 Cartfile 中指定它。

github "Alamofire/Alamofire"

Swift 包管理器

Swift 包管理器 是一款自动化 Swift 代码分发工具,并集成到 swift 编译器中。

一旦您设置了 Swift 包,将 Alamofire 添加为依赖项只需将其添加到 Package.swiftdependencies 值即可。

dependencies: [
    .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.6.4"))
]

手动

如果您不希望使用任何上述依赖关系管理器,您可以手动将 Alamofire 集成到您的项目中。

内嵌框架

  • 打开终端,使用 cd 进入您的顶级项目目录,然后运行以下命令 "如果" 您的项目尚未初始化为 Git 存储库

    $ git init
  • 通过运行以下命令将 Alamofire 添加为 Git 子模块

    $ git submodule add https://github.com/Alamofire/Alamofire.git
  • 打开新的 Alamofire 文件夹,并将 Alamofire.xcodeproj 拖放到您的应用程序 Xcode 项目的 Project Navigator 中。

    它应该嵌套在您的应用程序蓝色项目图标下面。无论它是否在所有其他 Xcode 组之上或之下并不重要。

  • 在 Project Navigator 中选择 Alamofire.xcodeproj 并验证其部署目标是否与您的应用程序目标匹配。

  • 接下来,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,并在侧边栏的 "Targets" 标题下选择应用程序目标。

  • 在那个窗口的标签栏中,打开 "General" 面板。

  • 点击 "Embedded Binaries" 部分的 + 按钮。

  • 您将看到两个不同的 Alamofire.xcodeproj 文件夹,每个文件夹内部都有一个 Products 文件夹,其中包含两个不同的 Alamofire.framework 版本。

    您可以选择哪个 Products 文件夹并不重要,但您选择的是顶部的 Alamofire.framework 还是底部的 Alamofire.framework 很重要。

  • 对于 iOS,选择顶部的 Alamofire.framework,对于 macOS,选择底部的。

    您可以通过检查项目的构建日志来验证您选择了哪个。对于 Alamofire 的构建目标将列出为 Alamofire iOSAlamofire macOSAlamofire tvOSAlamofire watchOS

  • 到此为止!

    Alamofire.framework 将自动添加为目标依赖项,链接框架和嵌入框架,在复制文件构建阶段这是您在模拟器和设备上构建所需所有内容。

贡献

在向 Alamofire 贡献之前,请阅读我们详细的指南:贡献指南

开放的雷达

以下雷达对 Alamofire 当前的实现有一定影响。

  • rdar://21349340 - 测试用例中的免费用桥接问题导致编译器报错
  • rdar://26870455 - 背景URL Session配置在模拟器中不起作用
  • rdar://26849668 - 一些URLProtocol API没有正确处理URLRequest

已解决的雷达

以下雷达在提交给 Alamofire 项目后经过一段时间已经解决。

  • rdar://26761490 - Swift字符串插值在常见用法中导致内存泄漏
    • (已解决):2017年9月1日在Xcode 9 beta 6。
  • rdar://36082113 - URLSessionTaskMetrics在watchOS 3.0+上无法链接
    • (已解决):只需将CFNetwork添加到您的链接框架中。
  • FB7624529 - 在watchOS上从未调用urlSession(_:task:didFinishCollecting:)
    • (已解决):现在在watchOS 7+上收集指标。

FAQ

Alamofire这个名称的由来是什么?

Alamofire的名称来源于阿拉莫火花,这是一种蓝旋报春的杂交品种,而蓝旋报春是德克萨斯州的州花。

鸣谢

Alamofire由Alamofire软件基金会拥有和维护。您可以通过Twitter关注他们@AlamofireSF,以获取项目更新和版本发布信息。

安全披露

如果您认为您已经发现Alamofire的安全漏洞,请尽快通过电子邮件报告给 [email protected]。请勿将其发布到公共问题跟踪器。

赞助

Alamofire 团队正在寻求筹集资金,以正式注册为联邦非营利组织。注册将使得基金会成员能够获得一些法律保护,并允许我们免税使用捐款。赞助 Alamofire 将使我们能够

  • 支付年度法律费用,以保持非营利组织的良好状态
  • 支付我们的邮件服务器的费用,以便我们能够及时处理所有问题和安全问题
  • 有潜力资助测试服务器,以便我们更容易地测试边缘情况
  • 有潜力资助开发者全职参加我们的某个项目

Alamofire 库在社区中的采用率非常高。我们对您对项目的热情深感谦卑,并希望能够尽我们所能推动项目前进。在您的持续支持下,Alamofire 能够扩大其影响范围,同时也为核心成员提供更好的法律保护。如果您在工作中使用了我们的任何库,请看看您的雇主是否对捐赠感兴趣。无论是单次捐赠还是每月捐赠,任何您能够捐赠的金额都将极大地帮助我们实现目标。

赞助 Alamofire

支持者

MacStadium 为 Alamofire 提供免费的托管 Mac mini。

Powered by MacStadium

许可证

Alamofire 采用 MIT 许可证发布。详细内容请参考 LICENSE