Reachability.swift: Uso mais simples?

Criado em 8 jan. 2016  ·  9Comentários  ·  Fonte: ashleymills/Reachability.swift

Os exemplos na documentação parecem bastante codificados e se concentram nas alterações do estado de acessibilidade. Em uma biblioteca de acessibilidade que usei antes (IJReachability, que não é mais atualizada), fui capaz de fazer isso:

if IJReachability.isConnectedToNetwork() {
    print("connected")
} else {
    print("not connected")
}

... para uma verificação única de acessibilidade. É possível algo semelhante com Reachability.swift?

Documentation

Comentários muito úteis

Ei pessoal, eu fiz funcionar no meu projeto Swift com o código abaixo no meu arquivo AppDelegate.swift para acessibilidade.

import ReachabilitySwift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

var reach: Reachability?

var window: UIWindow?        

    // Reachability code
    // Allocate a reachability object
    do {
    self.reach = try Reachability.reachabilityForInternetConnection()
    } catch {
      // Handle it 👍          
    }
    // Set the blocks
    self.reach!.whenReachable = {
        (let reach: Reachability!) -> Void in
        // keep in mind this is called on a background thread
        // and if you are updating the UI it needs to happen
        // on the main thread, like this:
        dispatch_async(dispatch_get_main_queue()) {
            print("REACHABLE!")
        }
    }

    self.reach!.whenUnreachable = {
        (let reach: Reachability!) -> Void in
        print("UNREACHABLE!")
    }
    do {
           try self.reach!.startNotifier()
    } catch {
      // Handle it 👍    
    }

    return true
}

Todos 9 comentários

Oi,

Você pode fazer isso com certeza:

let reachability = try! Reachability.reachabilityForInternetConnection()

if reachability.currentReachabilityStatus == .NotReachable {
    print("not connected")
} else {
    print("connected")
}

espero que ajude
Cinzas

na seção Exemplo - código de notificações fornece o erro na linha abaixo

reachability.startNotifier ()
O erro é: a chamada pode ser lançada, mas não está marcada com 'tentar' e o erro não é tratado

eu consertei esse erro fazendo assim
Faz {
tente reachability.startNotifier ()
} pegar {
imprimir ("Não foi possível iniciar o notificador")
}

Mas não funcionou para mim, por favor, alguém ajude rapidamente

sugeriria que o exemplo de código acima de @ashleymills fosse adicionado ao Leiame

Boa escolha - vou cuidar disso.

Felicidades
Cinzas

Não seria algo como

let reachability = try? Reachability.reachabilityForInternetConnection()
if reachability == nil || reachability!.currentReachabilityStatus == .NotReachable {
    print("not connected")
} else {
    print("connected")
}

um pouco mais seguro? Se o objeto de alcance não puder ser criado, isso não travaria o aplicativo, mas relataria normalmente "não conectado".

Muito obrigado a ashleymills e desculpe pela resposta tardia.
agora o código foi atualizado e está funcionando muito, muito bem para mim e, especialmente, agradeço que o notificador de rede funcione muito rápido.

Eu faço meu trabalho assim.
A) Basta verificar a rede
1) escreva o código abaixo na classe de delegado do aplicativo

SSASwiftReachability.sharedManager?.startMonitoring()

2) verifique sua conectividade de rede antes de solicitar da web

if SSASwiftReachability.sharedManager?.isReachable() == true {
  print("YES CONNECTED")
}
else {
 print("NOT CONNECTED")
}

B) Notificador de rede de observação
1) escreva o código abaixo na classe de delegado do aplicativo

SSASwiftReachability.sharedManager?.startMonitoring()

2) escreva o código abaixo no método viewDidLoad ()

NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityStatusChanged:", name: SSAReachabilityDidChangeNotification, object: nil)

3) Implementar o método Notifier como aquele que funciona 100% para mim.

func reachabilityStatusChanged(notification: NSNotification) {

        if let info = notification.userInfo {

            if let status = info[SSAReachabilityNotificationStatusItem] {

                print(status.description)

                let  reachability = SSASwiftReachability.sharedManager

                switch reachability?.networkReachabilityStatus {

                case .ReachableViaWiFi?:
                    print(NetReachable.REACHABLEVIAWIFI)
                    break
                case .ReachableViaWWAN?:
                    print(NetReachable.REACHABLEVIAWWAN)
                    break
                case .Reachable?:
                    print(NetReachable.REACHABLE)
                    break
                case .NotReachable?:
                    print(NetReachable.NOTREACHABLE)
                    break
                default :
                    print(NetReachable.NOTREACHABLE)
                }
            }
        }
    }

@ imran87 , você pode nos fornecer algum exemplo. Parece que seu código tem 2 vias.
Alguma ajuda? Especialmente na B? Isso também funciona no celular? Por favor, eu realmente preciso de um exemplo.

@ imran87 , você pode dar um exemplo, por favor. Eu realmente quero aprender sobre isso e sou iniciante na swift.

Ei pessoal, eu fiz funcionar no meu projeto Swift com o código abaixo no meu arquivo AppDelegate.swift para acessibilidade.

import ReachabilitySwift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

var reach: Reachability?

var window: UIWindow?        

    // Reachability code
    // Allocate a reachability object
    do {
    self.reach = try Reachability.reachabilityForInternetConnection()
    } catch {
      // Handle it 👍          
    }
    // Set the blocks
    self.reach!.whenReachable = {
        (let reach: Reachability!) -> Void in
        // keep in mind this is called on a background thread
        // and if you are updating the UI it needs to happen
        // on the main thread, like this:
        dispatch_async(dispatch_get_main_queue()) {
            print("REACHABLE!")
        }
    }

    self.reach!.whenUnreachable = {
        (let reach: Reachability!) -> Void in
        print("UNREACHABLE!")
    }
    do {
           try self.reach!.startNotifier()
    } catch {
      // Handle it 👍    
    }

    return true
}
Esta página foi útil?
0 / 5 - 0 avaliações