カテゴリー: iOS

[Swift]通信状況を取得できるReachability.swiftを使ってみた

はじめに

こんにちは、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を取得して外部機器に接続しているのを検知したりするのに使っていました。
同じような使い方がしたい人の助けになれれば嬉しいです。

nukky

シェア
執筆者:
nukky
タグ: Swift

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前