0
0

ライブラリを使わずネット接続状況を取得してみようと思う

Last updated at Posted at 2022-10-12

はじめに

端末が「ネットに接続されているとき」はスタンプを送信して〜や「ネットに接続されていないとき」はアラートを表示して〜みたいなことをしたいときが来る(はず)。そんなとき、NWPathMonitorを使用すればライブラリを使わずネットの接続状況を取得できる。

結論

NWPathMonitorとは、ネットワークの変更を監視して対応するためのオブザーバーである。
また、func start(queue: DispatchQueue)を使用することでパスの変更を監視することが可能。

詳細

  1. ネットワーク状況を監視するための NWPathMonitor()とパス配信するイベントキューDispatchQueue.global(qos: .background)を宣言する。
  2. パスモニターを開始し、ネットワークパスの更新を監視できるようにする。
  3. ネットワークパスが更新されたら行いたい処理を記述する。
Swift
import Network


class NetworkStatus {
    //ネットワーク状況を監視するための `NWPathMonitor()
    private let monitor = NWPathMonitor()
    //パス配信するイベントキュー
    private let queue = DispatchQueue.global(qos: .background)
    
    func setUp() {
        //パスモニターの開始
        monitor.start(queue: queue)
        
        //ネットワークパスが更新されたら行いたい処理を記述
        monitor.pathUpdateHandler = { path in
            if path.status == .satisfied {
                DispatchQueue.main.async {
                    print("接続中")
                    //何かしたい処理
                }
            } else {
                DispatchQueue.main.async {
                    print("接続解除")
                    //何かしたい処理
                }
            }
        }
    }
}

おわりに

ネット接続の有無の取得だが、DispatchQueue.main.asyncを使用することで何か描画や表示をする際、遅れて処理がなされてしまうみたいなことも防ぐことができる。スレッド関係諸々については後日まとめることとする。

参考記事

【SwiftUI】NWPathMonitorを使用して、ネットワーク通信状態を確認する
【Swift】NWPathMonitorを使ったネットワーク監視方法について

開発環境

  • Xcode-13.4.1
  • iOS13以降
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0