调用localizedNetworkReachabilityStatusString后状态未知

时间:2018-09-28 01:15:15

标签: swift alamofire

我需要将网络状态发送到某个分析服务器,因此我需要在应用启动后将其发送。我尝试使用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)


    })
}

1 个答案:

答案 0 :(得分:0)

好吧,因为没有人没有回答,我认为与您分享解决方案是一件好事。问题是这样的:我在didFinishLaunchingWithOptions上调用了此方法,由于Alamofire需要一段时间才能弄清连接状态,因此它将返回未知状态!我在applicationDidBecomeActive上调用了它,现在工作正常。