Reachability.swift
Reachability.swift 是苹果公司 Reachability 示例的替代品,使用 Swift 和闭包重写。
它兼容 iOS(8.0 - 12.0)、OSX(10.9 - 10.14)和 tvOS(9.0 - 12.0)
灵感来源:https://github.com/tonymillion/Reachability
支持 Reachability.swift
维护 Reachability.swift 是一项耗时的任务。进行更新、审查拉取请求、回应问题和回复邮件都需要时间。
请考虑赞助我 https://github.com/sponsors/ashleymills,这是表示感谢的好方法!
如果你是一名 iOS 开发者,正在寻找一种快速简便的方式来创建 App Store 截图,请试试我的应用 Screenshot Producer...
设备 | 布局 | 复制 | 本地化 | 导出 |
---|---|---|---|---|
别忘了给仓库加 ★。这会增加它的可见度,并鼓励其他人贡献。
谢谢 Ash
遇到问题?
在提出问题之前,请阅读 https://github.com/ashleymills/Reachability.swift/blob/master/CONTRIBUTING.md。
安装
手动安装
只需将 Reachability.swift 文件拖入你的项目即可。就这么简单!
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。使用 CocoaPods 安装 Reachability.swift:
-
确保已安装 CocoaPods。
-
更新你的 Podfile,包含以下内容:
use_frameworks! pod 'ReachabilitySwift'
-
运行
pod install
。
- 在代码中这样导入 Reachability:
import Reachability
Carthage
Carthage 是一个去中心化的依赖管理器,它构建你的依赖并提供二进制框架。 使用 Carthage 安装 Reachability.swift:
- 通过 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
-
在 Cartfile 中添加
github "ashleymills/Reachability.swift"
。 -
运行
carthage update
。 -
将
Carthage/Build/iOS/
目录中的Reachability.framework
拖到 Xcode 项目General
设置的Linked Frameworks and Libraries
部分。 -
在 Carthage 的 Run Script Phase 中,将
$(SRCROOT)/Carthage/Build/iOS/Reachability.framework
添加到Input Files
。 -
在代码中这样导入 Reachability:
import Reachability
Swift Package Manager (SPM)
Swift Package Manager 是一个用于自动化分发 Swift 代码的工具,它集成在 swift 编译器中。使用 Xcode 中的 Apple Swift 包管理器集成:
-
File -> Swift Packages -> Add Package Dependency...
-
输入包 URL:https://github.com/ashleymills/Reachability.swift,选择最新版本
示例 - 闭包
注意:所有闭包都在主队列上运行。
//在相对于你的监听器不会超出作用域的地方声明此属性
let reachability = try! Reachability()
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("通过 WiFi 可达")
} else {
print("通过蜂窝网络可达")
}
}
reachability.whenUnreachable = { _ in
print("不可达")
}
do {
try reachability.startNotifier()
} catch {
print("无法启动通知器")
}
停止通知:
reachability.stopNotifier()
示例 - 通知
注意:所有通知都在主队列上传递。
//在相对于你的监听器不会超出作用域的地方声明此属性
let reachability = try! Reachability()
//在 viewWillAppear 内声明
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
do{
try reachability.startNotifier()
}catch{
print("无法启动可达性通知器")
}
以及
@objc func reachabilityChanged(note: Notification) {
let reachability = note.object as! Reachability
switch reachability.connection {
case .wifi:
print("通过 WiFi 可达")
case .cellular:
print("通过蜂窝网络可达")
case .unavailable:
print("网络不可达")
}
}
停止通知:
reachability.stopNotifier()
NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)
想要帮忙?
有 bug 修复或新功能?创建一个拉取请求,开始吧!
告诉我!
如果你使用了 Reachability.swift,请告诉我你的应用信息,我会把链接放在这里...,别忘了告诉你的朋友!
谢谢, Ash