Ola

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?)

检查主机可达性

常见的用例是同步(虽然不在主线程上 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。

许可证

MIT