概要
Swift でネットワークに接続しているかどうか確認するのに Reachability.swift
というライブラリがあったので使ってみました
サンプルが動作するか確認したレベルです
環境
- macOS 10.13.3
- Xcode 9.2 (9C40b)
- ReachabilitySwift 4.1.0
ライブラリインストール
- pod init
- vim Podfile
pod 'ReachabilitySwift'
- pod install
サンプルコード
- vim ViewController.swift
import UIKit
import Reachability
class ViewController: UIViewController {
let reachability = Reachability()!
override func viewDidLoad() {
super.viewDidLoad()
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
}
}
let reachability = Reachability()!
はインスタンス変数として定義するようにしてください
ローカル変数だと初めの 1 回しか監視できません
closure でリスナーを登録してネットワークの状態が変化したら呼ばれるようにします
リスナーを登録したら reachability.startNotifier()
でネットワークの監視を初めます
基本的には必要なときに start して終了したら stop したほうが良いと思います
このリスナーの中でフラグを ON/OFF するような仕組みにすればアプリがネットワークにつながっているかチャックできると思います
ちなみに実機でテストして Wifi などを切ったりすると実際にコールされるリスナーの動きを確認することができると思います
0 件のコメント:
コメントを投稿