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?
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
}
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.