Reachability.swift

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

保持 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

CocoaPods 是 Cocoa 项目的依赖项管理器。 要使用 CocoaPods 安装 Reachability.swift

  1. 确保 CocoaPods 已安装

  2. 更新您的 Podfile 以包含以下内容

    use_frameworks!
    pod 'ReachabilitySwift'
  3. 运行 pod install

  1. 在您的代码中,像这样导入 Reachability:import Reachability

Carthage

Carthage 是一个去中心化的依赖管理器,可以构建您的依赖项并为您提供二进制框架。 要使用 Carthage 安装 Reachability.swift

  1. 通过 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
  1. github "ashleymills/Reachability.swift" 添加到您的 Cartfile 中。

  2. 运行 carthage update

  3. Reachability.frameworkCarthage/Build/iOS/ 目录拖到 Xcode 项目的 General 设置的 Linked Frameworks and Libraries 部分。

  4. $(SRCROOT)/Carthage/Build/iOS/Reachability.framework 添加到 Carthage 的 Run Script Phase 的 Input Files

  5. 在您的代码中,像这样导入 Reachability:import Reachability

Swift Package Manager (SPM)

Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并已集成到 Swift 编译器中。 要使用 Apple 的 Swift 包管理器从 Xcode 集成

  1. File -> Swift Packages -> Add Package Dependency...

  2. 输入包 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