GTNetMon Swift 包

将网络监控功能集成到 Swift 项目中!

Platform iOS Platform macOS Language License

关于

GTNetMon 是一个轻量级的 Swift 库,用于检测设备是否已连接到互联网,识别连接类型(Wi-Fi、蜂窝网络等),并监控网络状态的变化。适用于 iOS 和 macOS。

您想要将 GTNetMon 作为 pod 使用吗?查看这里

集成 GTNetMon

要将 GTNetMon 集成到您的项目中,请按照以下步骤操作

  1. 将存储库的 URL 复制到 GitHub。
  2. 在 Xcode 中打开您的项目。
  3. 转到菜单 File > Swift Packages > Add Package Dependency...(文件 > Swift 包 > 添加包依赖项...)。
  4. 粘贴 URL,当出现该包时选择它,然后单击“Next”(下一步)。
  5. “Rules”(规则)中,保留默认选项(“Up to Next Major”(直到下一个主版本))并单击“Next”(下一步)。
  6. 最后,选择 GTNetMon-Swift-Package 包,并选择要添加到的 Target(目标);单击“Finish”(完成)。

使用 GTNetMon

使用 GTNetMon 单例类,通过其 shared 实例访问所有公开可用的属性和方法。

可用属性如下

除了上述属性外,还有以下两种方法

重要提示

  1. 建议在 AppDelegate 类的 applicationDidBecomeActive(_:)applicationWillResignActive(_:) 方法中分别启动和停止监控。
  2. 想要接收监控到的网络状态变化通知的类应观察 GTNetMonNetworkStatusChangeNotification 通知。每当发生连接变化时,就会发布此通知。

在 iOS 中的使用示例

AppDelegate.swift 文件中启动和停止监控

func applicationDidBecomeActive(_ application: UIApplication) {
    GTNetMon.shared.startMonitoring()
}

func applicationWillResignActive(_ application: UIApplication) {
    GTNetMon.shared.stopMonitoring()
}

一个简单的视图控制器示例实现,用于监控网络变化

import UIKit
import GTNetMon

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Observe for the GTNetMonNetworkStatusChangeNotification notification.
        NotificationCenter.default.addObserver(self, selector: #selector(handleStatusChange(notification:)), name: .GTNetMonNetworkStatusChangeNotification, object: nil)
    }

    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        showConnectionInfo()
    }
    
    
    deinit {
        NotificationCenter.default.removeObserver(self)
    }
    
    
    @objc func handleStatusChange(notification: Notification) {
        self.showConnectionInfo()
    }
    
    
    func showConnectionInfo() {
        print("Is connected: \(GTNetMon.shared.isConnected)")
        
        "\nAvailable Connection Types:"
        for type in GTNetMon.shared.availableConnectionTypes {
            print(type.toString())
        }
        
        print("\n\nCurrent Connection Type: \(GTNetMon.shared.connectionType.toString())")
        print("Is Expensive: \(GTNetMon.shared.isExpensive)")
    }
    
}

关于 GTNetMon.ConnectionType

GTNetMon.ConnectionType 是一个 enum(枚举),具有以下情况

其他

在 iOS >= 12.0 中,使用 iOS SDK 的新 Network 框架来检索网络信息。在较旧的 iOS 版本中,则使用 SCNetworkReachability API。

版本

当前最新版本为 1.0.3。

许可证

GTNetMon 在 MIT 许可证下获得许可。