如何在应用程序中使用Alamofire的NetworkRechabilityManager?

时间:2018-05-07 08:17:56

标签: ios swift alamofire

我在Swift中实现了一个iOS应用程序。我正在使用Alamofire,因此我有一个名为'NetworkRechabilityManager.swift'的文件。我已经完成了很多在线教程并且正在使用它。

我的应用中有一个页面,其数据是从API获取的。在'HomePageViewController'文件中检查响应的状态代码时,我计划为'response == nil'应用网络可达性。

if response == nil {
    let request = NSMutableURLRequest(url: ("www.xyz.com/api/v1/home_page")!)
    let tempRequest1 = Requests(request: request,requestID: home_page_key)
    HelperClass.requestDict.updateValue(tempRequest1!, forKey: home_page_key)
    HelperClass.listner()
    HelperClass.manager?.startListening()
}

在我的HelperClass中我有:

static var requestDict: [String: Requests] = [String: Requests]()
{
    didSet
    {
        if(requestDict.count <= 0 && shouldStopListening()) 
        {
            HelperClass.manager?.stopListening()
        }
        else
        {
            HelperClass.manager?.startListening()
        }
        HelperClass.saveRequests()
    }
}

static func listner()
{
    if(shouldStopListening())
    {
        return
    }
    HelperClass.manager?.listener = { status in
        if(HelperClass.manager?.isReachable ?? false)
        {
            if(shouldStopListening())
            {
                return
            }
            execRequests()
            }
        }
}

在'HomePageViewController'文件中,响应为200,

if response == 200 { // performing required actions and 
    HelperClass.requestDict.removeValue(forKey: home_page_key)
}

似乎不起作用,任何人都可以举例说明实施Alamofire的解释。

2 个答案:

答案 0 :(得分:0)

你可以像那样使用它

import Foundation
import Alamofire
class ConnectivityManager {
    class var isConnectedToInternet:Bool {
        return NetworkReachabilityManager()!.isReachable
    }
}

并像那样使用

 if !ConnectivityManager.isConnectedToInternet {
            print("not connected")
            return
     }
      // continue your task

答案 1 :(得分:0)

您可以使用“可达性”第三方课程,该课程在互联网更改和互联网波动期间提供回调。

此处:https://github.com/ashleymills/Reachability.swift