2018年3月2日金曜日

Swift でネットワークに接続されているか確認できる ReachabilitySwift をさらっと試してみた

概要

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 件のコメント:

コメントを投稿