Как использовать NetworkRechabilityManager из Alamofire в приложении? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть приложение для iOS, реализованное в Swift. Я использую 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 голосов
/ 07 мая 2018

Вы можете использовать сторонний класс "Reachability", который обеспечивает обратные вызовы во время смены интернета и колебаний интернета.

здесь: https://github.com/ashleymills/Reachability.swift

0 голосов
/ 07 мая 2018

Вы можете использовать это так

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

И использовать это так

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