Reachability.swift 是 Apple 的 Reachability 示例的替代品,使用 Swift 闭包重写。
它兼容 iOS (8.0 - 12.0)、OSX (10.9 - 10.14) 和 tvOS (9.0 - 12.0)
灵感来自 https://github.com/tonymillion/Reachability
保持 Reachability.swift 的更新是一项耗时的任务。进行更新、审查 pull request、回复问题和回复电子邮件都需要时间。
请考虑赞助我 https://github.com/sponsors/ashleymills,这是表达感谢的好方法!
如果您是一位正在寻找一种快速简便的方法来创建 App Store 屏幕截图的 iOS 开发者,请试用我的应用程序 Screenshot Producer…
设备 | 布局 | 复制 | 本地化 | 导出 |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
并且不要忘记 ★ 这个仓库。这会增加它的可见性并鼓励其他人贡献。
感谢 Ash
在提出问题之前,请阅读 https://github.com/ashleymills/Reachability.swift/blob/master/CONTRIBUTING.md。
只需将 Reachability.swift 文件拖放到您的项目中即可。就这样!
CocoaPods 是 Cocoa 项目的依赖项管理器。 要使用 CocoaPods 安装 Reachability.swift
确保 CocoaPods 已安装。
更新您的 Podfile 以包含以下内容
use_frameworks!
pod 'ReachabilitySwift'
运行 pod install
。
import Reachability
Carthage 是一个去中心化的依赖管理器,可以构建您的依赖项并为您提供二进制框架。 要使用 Carthage 安装 Reachability.swift
$ brew update
$ brew install carthage
将 github "ashleymills/Reachability.swift"
添加到您的 Cartfile 中。
运行 carthage update
。
将 Reachability.framework
从 Carthage/Build/iOS/
目录拖到 Xcode 项目的 General
设置的 Linked Frameworks and Libraries
部分。
将 $(SRCROOT)/Carthage/Build/iOS/Reachability.framework
添加到 Carthage 的 Run Script Phase 的 Input Files
。
在您的代码中,像这样导入 Reachability:import Reachability
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 Swift 编译器中。 要使用 Apple 的 Swift 包管理器从 Xcode 集成
File -> Swift Packages -> Add Package Dependency...
输入包 URL:https://github.com/ashleymills/Reachability.swift,选择最新版本
注意:所有闭包都在主队列上运行。
//declare this property where it won't go out of scope relative to your listener
let reachability = try! Reachability()
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
以及用于停止通知
reachability.stopNotifier()
注意:所有通知都在主队列上发送。
//declare this property where it won't go out of scope relative to your listener
let reachability = try! Reachability()
//declare this inside of viewWillAppear
NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(note:)), name: .reachabilityChanged, object: reachability)
do{
try reachability.startNotifier()
}catch{
print("could not start reachability notifier")
}
和
@objc func reachabilityChanged(note: Notification) {
let reachability = note.object as! Reachability
switch reachability.connection {
case .wifi:
print("Reachable via WiFi")
case .cellular:
print("Reachable via Cellular")
case .unavailable:
print("Network not reachable")
}
}
以及用于停止通知
reachability.stopNotifier()
NotificationCenter.default.removeObserver(self, name: .reachabilityChanged, object: reachability)
有 bug 修复或新功能? 创建一个 pull request 并开始吧!
如果您使用 Reachability.swift,请告诉我您的应用,我会在这里…放一个链接,并告诉您的朋友!
干杯,Ash