Removes is on WiFi check from main queue.

This commit is contained in:
Krunoslav Zaher 2016-04-12 12:17:10 +02:00
parent c193b5db52
commit ceee55e6d9
1 changed files with 10 additions and 2 deletions

View File

@ -9,6 +9,7 @@
#if !RX_NO_MODULE
import RxSwift
#endif
import Foundation
public enum ReachabilityStatus {
case Reachable(viaWiFi: Bool)
@ -45,12 +46,19 @@ class DefaultReachabilityService
let reachabilityRef = try Reachability.reachabilityForInternetConnection()
let reachabilitySubject = BehaviorSubject<ReachabilityStatus>(value: .Unreachable)
// so main thread isn't blocked when reachability via WiFi is checked
let backgroundQueue = dispatch_queue_create("reachability.wificheck", DISPATCH_QUEUE_SERIAL)
reachabilityRef.whenReachable = { reachability in
reachabilitySubject.on(.Next(.Reachable(viaWiFi: reachabilityRef.isReachableViaWiFi())))
dispatch_async(backgroundQueue) {
reachabilitySubject.on(.Next(.Reachable(viaWiFi: reachabilityRef.isReachableViaWiFi())))
}
}
reachabilityRef.whenUnreachable = { reachability in
reachabilitySubject.on(.Next(.Unreachable))
dispatch_async(backgroundQueue) {
reachabilitySubject.on(.Next(.Unreachable))
}
}
try reachabilityRef.startNotifier()