Alamofire-SPI 5.4.1.2

Alamofire-SPI 5.4.1.2

Leo 维护。



  • Alamofire 软件基金会和 Leo

Alamofire: Elegant Networking in Swift

Build Status CocoaPods Compatible Carthage Compatible Platform Twitter Gitter Open Source Helpers

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

特性

  • 链式请求/响应方法
  • 支持 Combine
  • URL/JSON 参数编码
  • 上传文件/数据/流/多部分表单数据
  • 使用请求或续载数据下载文件
  • 使用 URLCredential 进行身份验证
  • HTTP 响应验证
  • 带有进度的上传和下载进度闭包
  • cURL 命令输出
  • 动态适应和重试请求
  • TLS 证书和公钥固定
  • 网络可达性
  • 综合单元和集成测试覆盖率
  • 完整文档

组件库

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

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

要求

  • iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+
  • Xcode 11+
  • Swift 5.1+

迁移指南

交流

  • 如果您需要帮助使用Alamofire进行网络请求,请使用Stack Overflow并标记alamofire
  • 如果您需要找到或理解一个API,请查看我们的文档或查看基于Alamofire构建的URLSession的Apple文档。
  • 如果您需要关于Alamofire功能的帮助,请使用我们在swift.org上的论坛。
  • 如果您想讨论Alamofire最佳实践,请使用我们在swift.org上的论坛。
  • 如果您想讨论功能请求,请使用我们在swift.org上的论坛。
  • 如果您发现了错误,请在此GitHub上创建一个问题,并遵循指南。越详细越好!
  • 如果您想要贡献,提交一个pull request!

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 Alamofire 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

pod 'Alamofire', '~> 5.2'

Carthage

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

github "Alamofire/Alamofire" ~> 5.2

Swift 包管理器

Swift 包管理器 是一个用于自动分发 Swift 代码的工具,并集成到 swift 编译器中。它处于早期开发阶段,但 Alamofire 支持在支持的平台上使用。

一旦您设置了您的 Swift 包,添加 Alamofire 作为依赖项就像将其添加到您的 Package.swift 中的 dependencies 值一样简单。

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

手动

如果您不打算使用上述任一依赖管理器,您可以将 Alamofire 手动集成到项目中。

嵌入式框架

  • 打开终端,使用cd命令进入你的顶级项目目录,如果你的项目未初始化为git仓库,则运行以下命令:

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

    $ git submodule add https://github.com/Alamofire/Alamofire.git
  • 打开新的Alamofire文件夹,将Alamofire.xcodeproj拖放到你的Xcode项目的“项目导航器”中。

    它应该嵌套在你的应用程序的蓝色项目图标之下。它是在所有其他Xcode组之上还是之下并不重要。

  • 在项目导航器中选中Alamofire.xcodeproj,并验证部署目标是否与你的应用程序目标匹配。

  • 接下来,在项目导航器中选择你的应用程序项目(蓝色项目图标)以切换到目标配置窗口,在侧边栏的“目标”标题下选择应用程序目标。

  • 在该窗口的标签栏中,打开“通用”面板。

  • 在“已嵌入的二进制文件”部分下点击+按钮。

  • 你会看到两个不同的Alamofire.xcodeproj文件夹,每个文件夹中都包含两个不同版本的Alamofire.framework,它们位于一个Products文件夹中。

    你选择哪个Products文件夹都无关紧要,但它确实决定了你是选择顶部还是底部的Alamofire.framework

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

    你可以通过检查你的项目构建日志来验证你的选择。构建目标将是“Alamofire iOS”,“Alamofire macOS”,“Alamofire tvOS”或“Alamofire watchOS”。

  • 就这样!

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

打开雷达

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

  • rdar://21349340 - 测试用例中的免费桥接问题导致编译器抛出警告
  • rdar://26870455 - 背景URL会话配置在模拟器中不工作
  • rdar://26849668 - 一些URLProtocol API没有正确处理URLRequest
  • FB7624529 - 在watchOS上urlSession(_:task:didFinishCollecting:)从不调用

已解决的雷达

以下雷达在被提交到 Alamofire 项目后,随着时间的推移被解决了。

  • rdar://26761490 - Swift 字符串插值导致内存泄露。
    • (已解决):2017年9月1日在 Xcode 9 测试版6中。
  • rdar://36082113 - 在 watchOS 3.0 及以上版本中 URLSessionTaskMetrics 无法链接并出现错误。
    • (已解决):只需将 CFNetwork 添加到你的链接框架中。

解决方案

  • 由于 FB7624529,目前 watchOS 上禁用 URLSessionTaskMetrics 的收集。

常见问题解答

Alamofire 命名的由来是什么?

Alamofire 的名字来源于 Alamo Fire flower,这是德克萨斯州州花蓝bonnet 的杂交变种。

鸣谢

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

安全公告

如果您认为您已发现与 Alamofire 相关的安全漏洞,您应尽快通过电子邮件向 [邮箱地址受保护] 报告。请勿将其发布到公开的问题跟踪器。

捐赠

Apache 软件基金会(ASF)正在寻找筹集资金,以便正式注册为联邦非营利组织。注册将使基金会成员获得一些法律保护,并允许我们免税使用捐款。向 ASF 捐款将使我们能够:

  • 支付我们每年用于维护非盈利组织良好状态的法律费用
  • 为邮件服务器付费,帮助我们处理所有问题和安全问题
  • 资助测试服务器,使我们更容易测试边缘情况
  • 资助开发者全职进行我们的项目之一

ASF 库的社区采用情况令人惊叹。我们对您对项目的热情深感谦卑,并希望继续尽一切努力推动项目发展。在您的持续支持下,ASF 将能够改善其覆盖范围,并为核心成员提供更好的法律保护。如果您在工作中使用过我们的任何库,请看看您的雇主是否有兴趣捐款。您今天能捐出的任何金额都将对我们实现目标有很大帮助。

paypal

许可证

Alamofire 采用 MIT 许可证发布。有关详细信息,请参阅 LICENSE