カテゴリー: 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

最近の投稿

go 1.24の tool directive でツールを管理する

はじめに プロダクト開発を行う…

2か月 前

uvの本番環境用dockerのマルチステージビルド

はじめに uvで本番環境のdo…

2か月 前

Go 1.24で追加されたweak pointer

はじめに 前回の記事では、Go…

3か月 前

Next.jsでサイトマップの実装

はじめに Next.jsでサイ…

4か月 前