[英]How to check network reachability when the device is connected to some hotspot and that hotspot's mobile data is off
我正在使用 Almofire 來實現網絡可達性。 這是場景:
class ReachabilityManager: NSObject {
static let shared = ReachabilityManager()
let reachabilityManager = Alamofire.NetworkReachabilityManager(host: "my.server.url")
var isReachable : Bool {
return reachabilityManager?.isReachable ?? false
}
}
也許嘗試用NWPathMonitor
替換 reachability 。
它更加可靠,並為您提供更多選擇。
這是一個例子:
import Network
let monitor = NWPathMonitor()
func monitorNetwork() {
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
connectionAvailable = true
} else {
connectionAvailable = false
}
}
let queue = DispatchQueue(label: "Net")
monitor.start(queue: queue)
}
您還可以檢查用戶是否正在使用蜂窩數據或連接到熱點:
path.isExpensive
根據文檔:
一個 Boolean 指示路徑是否使用被認為是昂貴的接口,例如蜂窩或個人熱點。
此外,您可以檢查各種連接要求或類型:
let monitor = NWPathMonitor(requiredInterfaceType: .cellular)
這為您提供了更多選項,例如:.wifi、wierdEthe.net、環回等。
請參閱以下文檔: NWInterface.InterfaceType
讓可達性=可達性()!
//This function is find to wifi or Cellular network
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
//When Network is Off This Function Call
reachability.whenUnreachable = { _ in
print("Not reachable")
}
//This code is automatically call when network is on.
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.