всплывающее оповещение при потере соединения Reachability во время использования приложения (IOS xcode swift)

Я новичок в разработке приложений для IOS и хотел бы «всплывающее оповещение, когда соединение Reachability теряется во время использования приложения (IOS xcode swift)», но я получаю всплывающее оповещение только при запуске моего приложения. Во время использования моего приложения не появляется всплывающее окно с предупреждением о потере интернет-соединения. Пожалуйста, помогите, спасибо!

Что я сделал: 1) создал файл Reachability.swift и написал

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) отредактируйте файл ViewController.swift, как показано ниже.

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

}

person Eric Chong    schedule 14.07.2015    source источник


Ответы (1)


Попробуйте этот класс Reachability, добавьте его в свой проект и выполните следующие действия в своем 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()
person iAnurag    schedule 14.07.2015
comment
спасибо, но я действительно новичок, пожалуйста, помогите мне шаг за шагом, как это сделать. - person Eric Chong; 14.07.2015
comment
1.) добавьте файлreachability.swift в свой проект. 2) и вставьте приведенный выше код либо в свой метод viewDidLoad. или метод applicationDidFinishLaunchingWithOptions. и запустите код - person iAnurag; 14.07.2015
comment
большое спасибо! Я следую вашему ответу, и он работает на 99%. Я поместил ваш метод viewDidLoad в ViewController. - person Eric Chong; 14.07.2015
comment
Единственная проблема сейчас заключается в том, что при запуске приложения без подключения к Интернету нет предупреждения. Вы можете помочь ? - person Eric Chong; 14.07.2015
comment
вместо println введите свой код оповещения, братан. И UIAlertView устарел в iOS8. использовать UIAlertController - person iAnurag; 14.07.2015
comment
Да, я сделал. Вот почему он показывает предупреждение, если приложение запущено, а затем происходит сбой подключения. Но если сейчас нет подключения и запустить приложение, предупреждения не будет. Кодreachability.whenUnreachable = { достижимость в println(Notreachable) var alert = UIAlertView(title: Нет подключения к Интернету, сообщение: Убедитесь, что ваше устройство подключено к Интернету., делегировать: nil, cancelButtonTitle: OK) alert.show() } - person Eric Chong; 14.07.2015
comment
использовать self.presentviewController в viewDidLoad - person iAnurag; 14.07.2015
comment
Теперь ошибки нет, а как раньше. Нет предупреждения при запуске приложения без подключения к Интернету. - person Eric Chong; 14.07.2015
comment
dispatch_async существует в моем проекте, я ищу его в Интернете, и на данный момент он слишком сложен для меня, чтобы понять, мне нужно время, чтобы изучить его. - person Eric Chong; 14.07.2015