6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift】NWPathMonitorを使ったネットワーク監視方法について

Posted at

本日内容

ライブラリを使わずにApple純正の方法(NWPathMonitor)で、Networkのハンドリングをできることが気がつきました。
今回はその時の手順を記載しております。

NWPathMonitor

An observer that you use to monitor and react to network changes.
ネットワークの変更を監視して対応するために使用するオブザーバー。

Availability

iOS 12.0+
macOS 10.14+
Mac Catalyst 13.0+
tvOS 12.0+
watchOS 5.0+
Xcode 10.0+

開発環境

Xcode 14.4
Swift
iOS14以上

手順

1.Network.swiftを作り、下記を追加します。

.swift
import Network

class Network {
    static let shared = Network() //シングルトン
    private let monitor = NWPathMonitor()
    func setUp() {
        monitor.pathUpdateHandler = { _ in
        }
        let queue = DispatchQueue(label: "Monitor")
        // ネットワーク監視開始
        monitor.start(queue: queue)
    }
    func isOnline() -> Bool {
        return monitor.currentPath.status == .satisfied
    }
}

2.AppDelegateに下記を参考に、Network.shared.setUp()を追加します

.swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        Network.shared.setUp() // 初期化対応
        return true
    }

3.ネットワークを実際に確認する場合

.swift
    if Network.shared.isOnline {
       //ネットワークあり
    } else {
       //ネットワークなし
    }

今回は以上になります!
これでネットワークErrorハンドリングして、ユーザー体験の向上にお役に立てればと存じます!
素敵な開発生活を!

最後まで読んでいただき、ありがとうございましたmm

参考資料

NWPathMonitorを使ったインターネット接続の確認方法
https://www.richcoding.co.jp/2020/03/26/nwpathmonitor/

NWPathMonitorのハマりどころ
https://qiita.com/noppefoxwolf/items/55fafdea55de754d2b3d

Apple公式
https://developer.apple.com/documentation/network/nwpathmonitor

6
9
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
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?