2015-07-14 1 views
1

Je suis débutant dans le développement d'une application IOS et souhaite "faire une alerte contextuelle lorsque la connexion Reachability est perdue lors de l'utilisation de l'application (IOS xcode swift)", mais je reçois seulement une alerte popup lorsque je démarre mon application. Il n'y a pas de popup d'alerte lors de l'utilisation de mon application lorsque la connexion Internet est perdue. S'il vous plaît veuillez aider, merci!alerte popup lorsque la connexion Reachability est perdue lors de l'utilisation de l'application (IOS xcode swift)

Ce que je l'ai fait: 1) créat un fichier Reachability.swift et Worte

import Foundation 

public class Reachability { 

class func isConnectedToNetwork()->Bool{ 

    var Status:Bool = false 

    let url = NSURL(string: "http://google.com/") 

    let request = NSMutableURLRequest(URL: url!) 

    request.HTTPMethod = "HEAD" 
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData 
    request.timeoutInterval = 10.0   

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

    return Status 
} 
} 

2) modifier le fichier ViewController.swift comme ci-dessous

import UIKit 
class ViewController: UIViewController { 

@IBOutlet weak var WebView: UIWebView! 

//ViewDidLoad method 
override func viewDidLoad() { 
    super.viewDidLoad() 

    if Reachability.isConnectedToNetwork() == true { 
     println("Internet connection OK") 
    } else { 
     println("Internet connection FAILED") 
     var alert = UIAlertView(title: "No Internet Connection", 
           message: "Make sure your device is connected to the internet.", 
           delegate: nil, 
           cancelButtonTitle: "OK") 

     alert.show() 

    } 
    var URL = NSURL(string: "http://www.google.com/") 

    WebView.loadRequest(NSURLRequest(URL: URL!)) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

} 
+2

https://github.com/ashleymills/Reachability.swift – luk2302

+0

http://stackoverflow.com/questions/25928826/using-apples-reachability-class-in-swift – luk2302

+0

Pourquoi la condition if-else a-t-elle été répétée deux fois? Je suppose que c'est une erreur de frappe. – Tejas

Répondre

4

Essayez cette classe Reachabilty, ajoutez-le à votre projet et faites ce qui suit dans votre viewController

let reachability = Reachability.reachabilityForInternetConnection() 

reachability.whenReachable = { reachability in 
if reachability.isReachableViaWiFi() { 
let alertController = UIAlertController(title: "Alert", message: "Reachable via WiFi", preferredStyle: .Alert) 

    let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
    alertController.addAction(defaultAction) 

    presentViewController(alertController, animated: true, completion: nil) 

} 
else { 
let alertController = UIAlertController(title: "Alert", message: "Reachable via Cellular", preferredStyle: .Alert) 

    let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
    alertController.addAction(defaultAction) 

    presentViewController(alertController, animated: true, completion: nil) 
    } 
    } 
reachability.whenUnreachable = { reachability in 
let alertController = UIAlertController(title: "Alert", message: "Not Reachable", preferredStyle: .Alert) 

    let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
    alertController.addAction(defaultAction) 

    presentViewController(alertController, animated: true, completion: nil) 
} 

reachability.startNotifier() 
+0

merci, mais je suis vraiment un débutant, s'il vous plaît veuillez me guider étape par étape comment le faire. –

+0

1.) ajoutez le fichier reachability.swift dans votre projet. 2) et collez le code ci-dessus soit dans votre méthode viewDidLoad. ou méthode applicationDidFinishLaunchingWithOptions. et exécutez le code – iAnurag

+0

merci beaucoup! Je suis votre réponse et cela fonctionne à 99%. J'ai mis votre méthode viewDidLoad de ViewController. –