2016-10-12 2 views
0

J'utilise la classe d'accessibilité d'Apple dans mon code. Voici le code de la appdelegateApple Reachability ne pas afficher d'alerte

 NSNotificationCenter.defaultCenter().addObserver(self, selector:"checkForReachability:", name: kReachabilityChangedNotification, object: nil); 

    self.reachability = Reachability.reachabilityForInternetConnection(); 
    self.reachability.startNotifier(); 

et c'est checkForReachability

func checkForReachability(notification:NSNotification){ 

    let remoteHostStatus = self.reachability!.currentReachabilityStatus() 
    if (remoteHostStatus.rawValue == NotReachable.rawValue) { 
     print("NOT REACHABLE") 
     let myAlert = UIAlertController(title: "Alert", message: "Please check your internet connection.", preferredStyle: UIAlertControllerStyle.Alert) 
     let okAction = UIAlertAction(title:"Try again.", style:UIAlertActionStyle.Default) { 
      action in 
      self.checkForReachability(notification) 
     } 
     myAlert.addAction(okAction) 
     self.window?.rootViewController?.presentViewController(myAlert, animated:true, completion:nil) 
    } 


} 

Mais il ne sera pas pop l'alerte quand il n'y a pas Internet (quand j'éteins le wifi)

+0

Obtenez-vous la déclaration d'impression (non accessible) dans la console? –

+0

Oui je reçois –

Répondre

0

Cela pourrait aider dans le cas

je donnerai la meilleure solution, j'espère que c'est utile.

import Foundation 
import SystemConfiguration 

public class ReachabilityCheck { 
    class func isConnectionAvailable()->Bool{ 

     var Status:Bool = false 
     let url = NSURL(string: "http://www.apple.com/") 
     let request = NSMutableURLRequest(URL: url!) 
     request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData 
     request.timeoutInterval = 20.0 
     request.HTTPMethod = "HEAD" 

     var response: NSURLResponse? 

     var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: nil) as NSData? 

     if let httpResponse = response as? NSHTTPURLResponse { 
      if httpResponse.statusCode == 200 { 
       Status = true 
      } 

     } 
     else 
     { 

      let alert = UIAlertView(title: "No Internet Connection", message: "Make sure you are connected to internet.", delegate: nil, cancelButtonTitle: "OK") 
      alert.show() 
     } 

     return Status 
    } 
} 

Comment accéder ou faire appel à d'autres classes:

if ReachabilityCheck.isConnectionAvailable() == true { 

// write your code here when there is network 

} 
+0

Cela fonctionnera pour la 3G? –

+0

Espérons que oui, laissez-moi savoir si vous rencontrez des problèmes – gurmandeep