こんにちは、nukkyです。
今回は端末の通信状況を取得できるReachability.swiftを使ってみたので紹介したいと思います。
今回もおなじみCarthageを使用します。
Cartfileにこちらを記述してください。
github "ashleymills/Reachability.swift"
そうしたら、以下のコマンドでビルドしてください。
carthage update --platform iOS
まずはReachabilityをimportします
import Reachability
Reachabilityのconnectionで通信状況の確認ができます
if let reachability = Reachability() { print(reachability.connection == .wifi) print(reachability.connection == .cellular) print(reachability.connection == .none) }
whenReachableで、通信可能になったタイミングを、
whenUnreachableで通信できなくなったタイミングを取得できます
let reachability = Reachability() reachability?.whenReachable = { reachability in print(reachability.connection) } try? reachability?.startNotifier()
let reachability = Reachability() reachability?.whenUnreachable = { reachability in print(reachability.connection) } try? reachability?.startNotifier()
cellular->wifiなど通信状況が変わった時は、NotificationCenterで検知する事もできます。
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を取得して外部機器に接続しているのを検知したりするのに使っていました。
同じような使い方がしたい人の助けになれれば嬉しいです。