我需要将网络状态发送到某个分析服务器,因此我需要在应用启动后将其发送。我尝试使用Alamofire,但通常会得到“未知”状态,如果有某种延迟,它将显示正确的状态: 这些代码将在我的AppDelegate(didFinishLaunchingWithOptions)中运行:
AFNetworkReachabilityManager.shared().startMonitoring()
AFNetworkReachabilityManager.shared().localizedNetworkReachabilityStatusString()
立即获得正确身份的最佳方法是什么?
更新1:
我更新了代码并尝试使用完成处理程序,但是为什么当我使用此方法时它会显示多个YES?
connectedCompletionBlock({ connected in
if connected {
print("YES")
} else {
print("NO")
}
})
class func connectedCompletionBlock(_ completion: @escaping (_ connected: Bool) -> Void) {
AFNetworkReachabilityManager.shared().startMonitoring()
AFNetworkReachabilityManager.shared().setReachabilityStatusChange({ status in
var isConnected = false
let wifi = AFNetworkReachabilityStatus.reachableViaWiFi
let wwan = AFNetworkReachabilityStatus.reachableViaWWAN
if ( status == wifi || status == wwan) {
con = true
}
AFNetworkReachabilityManager.shared().stopMonitoring()
completion(isConnected)
})
}
答案 0 :(得分:0)
好吧,因为没有人没有回答,我认为与您分享解决方案是一件好事。问题是这样的:我在didFinishLaunchingWithOptions上调用了此方法,由于Alamofire需要一段时间才能弄清连接状态,因此它将返回未知状态!我在applicationDidBecomeActive上调用了它,现在工作正常。