Ola Swift 包使您可以检查指定主机的网络可达性。您可以设置一个回调,以便在主机可达性发生变化时运行。Ola 是 Apple System Configuration API 的一个简单 Swift 封装,使其更易于使用。
import Foundation
import os.log
let host = "1.1.1.1"
var probe = Ola(host: host, log: .default)
probe?.activate { status in
print("host status: (\(host), \(String(describing: status)))")
}
sleep(10)
probe?.invalidate()
probe = nil
print("OK")
enum OlaStatus: Int
OlaStatus
枚举了三种精简的主机状态,这些状态源自 SCNetworkReachabilityFlags。
未知
可达
蜂窝网络
class Ola: Reaching
Ola
是此模块的主要对象,它实现了微小的 Reaching
API
protocol Reaching {
func reach() -> OlaStatus
func reach(statusBlock: @escaping (OlaStatus) -> Void)
func activate(installing callback: @escaping (OlaStatus) -> Void) -> Bool
func invalidate()
}
每个 Ola
对象都专用于监视特定的主机。
init?(host: String, log: OSLog?)
host
要监视的主机名称。常见的用例是同步(虽然不在主线程上 QA1693)检查给定的主机是否可达。
func reach() -> OlaStatus
返回主机的可达性:未知、可达或蜂窝网络。
func reach(statusBlock: @escaping (OlaStatus) -> Void)
与 reach()
相同,但为非阻塞,在系统提供的全局并发调度队列上执行。
一个不太常见的用例是在给定主机的状态发生变化时收到通知。例如,判断发出请求是否合适。
func activate(installing callback: @escaping (OlaStatus) -> Void) -> Bool
如果成功安装了 callback
,则返回 true
。
func invalidate()
使探测器失效,移除回调。
📦 将 https://github.com/michaelnisi/ola
添加到您的 package manifest。