swift - 调用localizedNetworkReachabilityStatusString 后的未知状态
问题描述
我需要将网络状态发送到某个分析服务器,所以我需要在应用程序启动后发送它。我尝试使用 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)
})
}
解决方案
好的,因为没有人没有回答,我认为与您分享解决方案很好。问题是这样的:我在 didFinishLaunchingWithOptions 上调用了这个方法,因为 Alamofire 需要一些时间才能确定连接状态,所以它会返回未知!我在 applicationDidBecomeActive 上调用了它,现在它工作正常。
推荐阅读
- sql-server - 如何修改多个 CASE 语句
- php - 从 php 字符串中捕获特定的字符串和值
- c - C 语言 fscan 不停止
- jupyter-notebook - Jupyter Lab 窗口未正确显示
- ios - UICollectionViewCell 是方形的,但图像是矩形的
- c# - 应用前预览图形形状
- ruby-on-rails - 无法从 Rails App 迁移到 Heroku
- python - Scipy Optimize - 控制解决方案数组的大小
- python - 如何在 Jupyter notebook (iPython) 中并排显示 2 张图像?
- php - 将javascript变量axios发送到php