2015-10-02 4 views
1

Мне нужно сделать некоторые вещи в моем приложении, как только устройство подключено к Wi-Fi. Речь идет не о том, «связано ли это с Wi-Fi?», Вместо этого «скажите мне, когда устройство подключилось к Wi-Fi, пока оно было отключено?»Как определить, подключен ли iPhone к Интернету напрямую?

Другими словами, мне нужно ответить на событие, когда iPhone просто подключен к интернету любым способом.

Возможно ли с помощью AFNetworking или, может быть, пользовательского API?

ответ

1

Вы можете использовать Reachability.

В примере кода вы найдете:

import UIKit 

let useClosures = false 

class ViewController: UIViewController { 

    @IBOutlet weak var networkStatus: UILabel! 

    let reachability = Reachability.reachabilityForInternetConnection() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if (useClosures) { 
      reachability?.whenReachable = { reachability in 
       self.updateLabelColourWhenReachable(reachability) 
      } 
      reachability?.whenUnreachable = { reachability in 
       self.updateLabelColourWhenNotReachable(reachability) 
      } 
     } else { 
      NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityChanged:", name: ReachabilityChangedNotification, object: reachability) 
     } 

     reachability?.startNotifier() 

     // Initial reachability check 
     if let reachability = reachability { 
      if reachability.isReachable() { 
       updateLabelColourWhenReachable(reachability) 
      } else { 
       updateLabelColourWhenNotReachable(reachability) 
      } 
     } 
    } 

    deinit { 

     reachability?.stopNotifier() 

     if (!useClosures) { 
      NSNotificationCenter.defaultCenter().removeObserver(self, name: ReachabilityChangedNotification, object: nil) 
     } 
    } 

    func updateLabelColourWhenReachable(reachability: Reachability) { 
     if reachability.isReachableViaWiFi() { 
      self.networkStatus.textColor = UIColor.greenColor() 
     } else { 
      self.networkStatus.textColor = UIColor.blueColor() 
     } 

     self.networkStatus.text = reachability.currentReachabilityString 
    } 

    func updateLabelColourWhenNotReachable(reachability: Reachability) { 
     self.networkStatus.textColor = UIColor.redColor() 

     self.networkStatus.text = reachability.currentReachabilityString 
    } 


    func reachabilityChanged(note: NSNotification) { 
     let reachability = note.object as! Reachability 

     if reachability.isReachable() { 
      updateLabelColourWhenReachable(reachability) 
     } else { 
      updateLabelColourWhenNotReachable(reachability) 
     } 
    } 
} 
+0

Он известит меня ... Как? –

+0

Но не забудьте отписаться от уведомлений о достижимости, потому что в конечном итоге вы можете вызвать слишком много раз, чтобы «у меня есть подключение к Интернету». – Soberman

+0

Да, просто проверьте демо оттуда. –

1

Простое использование для AFNetworking:

  1. Добавить наблюдатель:

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("networkDidChangeStatus"), name: AFNetworkingReachabilityDidChangeNotification, object: nil) 
    
  2. Реализация пользовательских Selector:

    func networkDidChangeStatus() { 
    
        if AFNetworkReachabilityManager.sharedManager().reachable { 
         print("connected") 
        } else { 
         print("disconnected") 
        } 
    } 
    
  3. мониторинг Начало:

    AFNetworkReachabilityManager.sharedManager().startMonitoring() 
    
Смежные вопросы