はじめに
こんにちは、nukkyです。
今回は端末の通信状況を取得できるReachability.swiftを使ってみたので紹介したいと思います。
準備
今回もおなじみCarthageを使用します。
Cartfileにこちらを記述してください。
1 |
github "ashleymills/Reachability.swift" |
そうしたら、以下のコマンドでビルドしてください。
1 |
carthage update --platform iOS |
実装
通信状況を確認する
まずはReachabilityをimportします
1 |
import Reachability |
Reachabilityのconnectionで通信状況の確認ができます
1 2 3 4 5 |
if let reachability = Reachability() { print(reachability.connection == .wifi) print(reachability.connection == .cellular) print(reachability.connection == .none) } |
通信可能になった時に通知する
whenReachableで、通信可能になったタイミングを、
whenUnreachableで通信できなくなったタイミングを取得できます
1 2 3 4 5 |
let reachability = Reachability() reachability?.whenReachable = { reachability in print(reachability.connection) } try? reachability?.startNotifier() |
1 2 3 4 5 |
let reachability = Reachability() reachability?.whenUnreachable = { reachability in print(reachability.connection) } try? reachability?.startNotifier() |
cellular->wifiなど通信状況が変わった時は、NotificationCenterで検知する事もできます。
1 2 3 4 5 6 7 8 9 10 11 |
let reachability = Reachability() override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged), name: .reachabilityChanged, object: reachability) try? reachability?.startNotifier() } @objc func reachabilityChanged() { print(Reachability()?.connection ?? "") } |
さいごに
通信状況を確認して機能の制御をしたり、
私の場合はWi-Fiに接続時にSSIDを取得して外部機器に接続しているのを検知したりするのに使っていました。
同じような使い方がしたい人の助けになれれば嬉しいです。