AlamofireNetworkActivityIndicator
使用 Alamofire 控制 iOS 上网络活动指示器的可见性。
特点
- 自动管理活动指示器可见性
- 延迟定时器以减少闪烁
- 支持 Alamofire 未管理的
URLSession实例 - 全面测试覆盖
- 完整文档
要求
- iOS 10.0+
- Xcode 11+
- Swift 5.1+
依赖
通信
- 如果您需要帮助,请访问 Stack Overflow。 (标签 'alamofire')
- 如果您想提问,请使用 Stack Overflow。
- 如果您发现了一个错误,请提交一个 Issue。
- 如果您有功能请求,请提交一个 Issue。
- 如果您想贡献力量,请提交一个 Pull Request。
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 在您的 Xcode 项目中集成 Alamofire,请在您的 Podfile 中指定它。
pod 'AlamofireNetworkActivityIndicator', '~> 3.1'Carthage
Carthage 是一个分散的依赖管理器,它构建您的依赖并提供二进制框架。要使用 Carthage 在您的 Xcode 项目中集成 Alamofire,请在您的 Cartfile 中指定它。
github "Alamofire/AlamofireNetworkActivityIndicator" ~> 3.1
Swift Package Manager (需要 Xcode 11)
- 选择“文件 > Swift 包 > 添加包依赖”。在“选择包仓库”对话框中输入
https://github.com/Alamofire/AlamofireNetworkActivityIndicator。 - 在下一页中,指定版本解析规则为“到下一个主要版本”,其最早版本为“3.1.0”。
- 在 Xcode 检出源并解析版本后,您可以选择“AlamofireNetworkActivityIndicator”库并将其添加到您的应用程序目标中。
手动
如果您不想使用上述任何依赖管理器,您可以手动将 AlamofireNetworkActivityIndicator 整合到您的项目中。
嵌入框架
- 打开终端,使用
cd命令进入您的顶级项目目录,如果您的项目没有初始化为Git仓库,请运行以下命令:
$ git init- 运行以下命令通过将 AlamofireNetworkActivityIndicator 作为 Git 子模块 添加:
$ git submodule add https://github.com/Alamofire/AlamofireNetworkActivityIndicator.git-
打开新的
AlamofireNetworkActivityIndicator文件夹,并将AlamofireNetworkActivityIndicator.xcodeproj拖动到您的应用程序 Xcode 项目的项目导航器中。它应该嵌套在您的应用程序的蓝色项目图标下面。它位于所有其他 Xcode 组的上方或下方无关紧要。
-
在项目导航器中选中
AlamofireNetworkActivityIndicator.xcodeproj并检查其部署目标是否与您的应用程序目标相符。 -
接下来,在项目导航器中选中您的应用程序项目(蓝色项目图标),导航到目标配置窗口,并在侧边栏的“目标”标题下选择应用程序目标。
-
在窗口顶部的选项卡栏中,打开“General”面板。
-
在“嵌入式二进制”部分下点击“+”按钮。
-
您将看到两个不同的
AlamofireNetworkActivityIndicator.xcodeproj文件夹,每个文件夹中都有一个嵌套在“Products”文件夹中、版本不同的AlamofireNetworkActivityIndicator.framework。选择哪个“Products”文件夹都无关紧要。
-
选择
AlamofireNetworkActivityIndicator.framework并将其添加到项目中。 -
就这样!
AlamofireNetworkActivityIndicator.framework将自动作为目标依赖项、链接框架和嵌入式框架在复制文件构建阶段中添加,这是您在模拟器和设备上构建所需的全部。
使用方法
NetworkActivityIndicatorManager 控制着网络活动指示器的状态。要开始使用它,只需在您的 AppDelegate 中,通过 application:didFinishLaunchingWithOptions: 方法启用与其共享的实例即可。
NetworkActivityIndicatorManager.shared.isEnabled = true通过为系统启用 shared 管理器,网络活动指示器将会在 Alamofire 请求开始和完成后自动显示和隐藏。
通知
NetworkActivityIndicatorManager 通过观察来自 Alamofire 发出的通知来管理当前活跃的网络请求计数。通过观察任务状态的变化,shared 管理器总是知道当前有多少请求正在活跃,并据此更新活动指示器的可见性。
可以配置
shared管理器来观察 Alamofire 之外的URLSession实例。您需要从匹配 Alamofire 中找到的相应的URLSessionDelegate发出匹配的通知。
延迟计时器
为了使用户的活动指示器体验尽可能愉快,需要添加开始和停止的延迟来进行,以避免闪烁。在 shared 管理器中内置了两个这样的延迟计时器。
开始延迟
开始延迟表示在显示活动指示器之前,网络活动应该持续的最短时间间隔。这有助于避免不必要地显示指示器用于快速的网络请求。默认值是 1.0 秒。如果需要,可以轻松更改默认值。
NetworkActivityIndicatorManager.shared.startDelay = 1.0完成延迟
完成延迟是一个时间间隔,表示在取消活动指示器之前不应观察到任何网络活动的时间长度。这允许活动指示器在多个网络请求之间持续显示。如果没有这个延迟,活动指示器容易闪烁。默认值是 0.2 秒。如果需要,您可以轻松更改默认值。
NetworkActivityIndicatorManager.shared.completionDelay = 0.2常见问题解答(FAQ)
为什么这个不在 Alamofire 中?
为了允许 Alamofire 在 App Extensions 中继续使用,这个逻辑不能包含在 Alamofire 框架中。为了提交 App Extension 到 App Store,它只能链接到指定仅使用 App Extension 安全 API 的框架。由于我们希望用户能够在 App Extensions 中使用 Alamofire,我们必须将 仅使用 App Extension 安全 API 设置为 true。正因为如此,我们无法在 Alamofire 框架中调用非安全 App Extension API。在 iOS 上控制活动指示器是通过非安全 App Extension API 完成的。因此,需要创建一个单独的库。
那关于可用性呢?在这种情况下没有帮助,因为可用性检查仍然会编译所有代码。我们也不能使用
#if os(iOS),因为你不能只针对 iOS 编译出特定的逻辑,而不是 iOS App Extension。
鸣谢
Alamofire 由 Alamofire 软件基金会所有并维护。您可以在推特上关注他们以获取项目更新和版本信息 @AlamofireSF。
捐赠
ASF 正在寻求筹集资金,以正式作为一个联邦的非营利组织注册。注册将使我们的成员获得一些法律保护,并允许我们将捐款用于免税。向 ASF 捐赠将使我们能够
- 支付我们每年的法律费用,以保持非营利组织的良好状态
- 支付我们的邮件服务器费用,帮助我们跟踪所有问题和安全问题
- 可能为测试服务器提供资金,以便我们更容易测试边缘情况。
- 可能为开发者提供资金,让他们全职从事我们的某个项目。
ASF库在社区中的采用率令人惊叹。我们对您对项目的热情感到非常谦卑,并希望尽我们所能继续推动项目的发展。在您的持续支持下,ASF将能够扩大其影响力,并为核心成员提供更好的法律保障。如果您在工作中使用了我们的任何库,看您的雇主是否愿意捐款。您今天能捐赠的任何金额都能帮助我们实现目标,我们将不胜感激。
许可证
AlamofireNetworkActivityIndicator 在MIT许可证下发布。有关详细信息,请参阅LICENSE。
