1. 程式人生 > >iOS網路-06-監聽Iphone的網路狀態

iOS網路-06-監聽Iphone的網路狀態

使用系統的方法來監聽網路狀態

  • 系統的方法是通過通知機制來實現網路狀態的監聽
  • 實現網路狀態監聽的步驟
    • 定義Reachability型別的成員變數來儲存網路的狀態

      @property (nonatomic, strong) Reachability *reachability;
    • 註冊為通知中心的的觀察者

      // 在通知中心註冊觀察者
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil
      ]; /** * getNetworkStatus:監聽到通知的回撥方法 * kReachabilityChangedNotification:通知的型別,即網路狀態發生改變時,觸發通知 * object:傳遞給getNetworkStatus回撥方法的引數 */ // 獲取並儲存網路狀態 self.reachability = [Reachability reachabilityForInternetConnection]; // 開始監聽 [self.reachability startNotifier];
    • 在監聽到通知的觸發方法中判斷網路的狀態

      - (void)getNetworkStatus
      {
          if
      ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) { NSLog(@"是WIFI"); } else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) { NSLog(@"是手機自帶網路"); } else { NSLog(@"網路有問題"
      ); } }
    • 將觀察者從通知中心移除,停止監聽,清空網路監聽物件

      - (void)dealloc
      {
          [[NSNotificationCenter defaultCenter] removeObserver:self];
          [self.reachability stopNotifier];
          self.reachability = nil;
      }

使用AFNetworking監聽網路狀態

  • 通過AFN監聽網路狀態比較簡單
  • 實現網路狀態監聽的
    • 獲取AFNetworkReachabilityManager的例項

      AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    • 設定manager在網路發生變化的時回撥的Block

      [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
          NSLog(@"----當前網路狀態---%zd", status);
      }];
      /**
      * status:表示當前網路的狀態,是個列舉型別變數,具有以下取值
      *       AFNetworkReachabilityStatusUnknown = -1
      *       AFNetworkReachabilityStatusNotReachable = 0
      *       AFNetworkReachabilityStatusReachableViaWWAN = 1
      *       AFNetworkReachabilityStatusReachableViaWiFi = 2
      */
    • 開始監聽

      [manager startMonitoring];

相關推薦

iOS網路-06-Iphone網路狀態

使用系統的方法來監聽網路狀態 系統的方法是通過通知機制來實現網路狀態的監聽實現網路狀態監聽的步驟 定義Reachability型別的成員變數來儲存網路的狀態 @property (nonatomic, strong) Reachability *reachability; 註冊為通知中心的的觀察者 //

iOS 使用AFNetWorkingAPP網路狀態變化(可用於更改快取策略、提示網路等)

前言 我們知道在APP開發過程中,監聽手機當前的網路狀態還是一個很常用的方法,這裡我來為大家接受一種使用AFNetWorking來監聽當前的網路狀態的方法;網路監聽對程式開發的幫助有很多:比如下載時在不同的網路狀態下使用不同下載策略、快取策略、或者就是一個單純

ios-通過Reachability網路狀態

Reachability實際上是蘋果公司對SCNetworkReachability API做的封裝,這個API被定義在SystemConfigure.framework庫中,網上可以去下Reacha

APIcloud實時手機網路狀態

APIcloud實時監聽手機網路狀態, 上次遇到一個問題,是做一個視訊播放的時候,要獲取到當前網路狀態,在wifi的網路下直接播放,不是wifi的網路下,提示用當前網路播放,確定就要播放,取消就不播放。弄了一下,遇到一個問題當wifi的時候能正常播放,而沒wifi的時候你點選了播放確

Android 實時監測(網路連線狀態變化

看了網上的很多,都不是自己想要的。所以自己就參考著寫了一個。 實現這個的方法很多,我是想的這種,如果哪有不足,有bug的地方希望大家指出,共同進步。。。。 先簡單說一下思路:網路變化時系統會發出廣播。所以我們監聽這個廣播,利用介面回撥通知activity做

【android】解決方案--用BroadcastReceiver手機網路狀態變化

實現一個功能,可以有很多種方法,但我們所追求的是最適合於自己專案的那一種方法。 就比如app要判斷網路狀態,如果在每次使用網路的時候去判斷一次網路狀態的話,有些耗費時間。例如,你要在開啟網頁之前先判斷網路是否暢通以及在下載圖片之前判斷網路型別,那麼務必造成等待時間的增加

android 網路實時網路狀態變化 及 網路型別判斷

android 中 我們經常需要判斷 各種網路型別   然後需要給使用者做出相應的提示,一般網路型別有 2g ,3g,4g ,wifi,無網路等等。 1. 網路型別判斷 TelephonyManag

AFNetworkReachabilityManager手機網路狀態的變化

// // ViewController.m // AFNetworkMonitor // // Created by hq on 16/4/18. // Copyright © 2016年 hanqing. All rights reserved. // #im

jxbrowser 所有網路請求 jxbrowser 系列教程2

jxbrowser 在 jxbrowser  中有一個介面叫做 NetworkDelegate  處理url 請求和相應 Modifier and Type

Python黑客程式設計3網路資料和過濾

Python黑客程式設計3網路資料監聽和過濾 課程的實驗環境如下: •作業系統:kali Linux 2.0 •程式設計工具:Wing IDE •Python版本:2.7.9 •涉及到的主要python模組:pypcap,dpkt,scapy,scapy-http 涉及到的幾個python網路抓包和

Oracle 11G Client 客戶端配製客戶端網路服務名(圖文詳解)

1。安裝Oracle 11G Client後可以在開始選單中找到 選擇NETCA->本地網路服務名配置 選擇新增本地網服務名配置 這裡的服務名:指的是也就是資料庫名 在網路中架設C/S 客戶端選擇TCP型別 輸入伺服器的IP地址,選用預設埠 測試下是否連通

Android Volley 網路併發 網路佇列完成

先說明一下原理: 1.利用反射機制獲取 RequestQueue 佇列中 mCurrentRequests 當前請求的集合,如果size==0, 則說明併發性網路請求已完成,為了保證準確性,建議給需要監聽的網路請求設定tag,並利用tag進行過濾 2.利用定時迴圈執行緒

[Android] 系統網路連線開啟或者關閉的訊息

很簡單,所以直接看程式碼。 package xxx; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; impo

安卓通過廣播實時當前網路狀況

需求: 當網路斷開或者連線上的時候,需要你的APP作出一定的響應,有時候還需要判斷當前網路的型別,wifi或者移動資料… 分析: 網路發生變化系統會發送廣播 通過註冊一個廣播接收

Kali-Linux無線網路滲透測試-李亞偉-第3章-WiFi網路--虛擬機器使用無線網絡卡

如果要管理無線網絡卡,則首先需要將該網絡卡插入到系統中。當用戶在物理機中使用無線網絡卡時,可能直接會被識別出來。如果是在虛擬機器中使用的話,可能無法直接連線到虛擬機器的作業系統中。這時候使用者需要斷開該網絡卡與物理機的連線,然後選擇連線到虛擬機器。在虛擬機器中只支援USB

解決ios上audio不能自動播放的問題以及audio播放狀態

最近做了個H5產品的宣傳活動,用到了audio標籤並且要求自動播放,我們都知道safri on ios裡面明確指出等待使用者的互動動作後才能播放media,也就是說如果你沒有得到使用者的action就

Android 7.0 網路變化

一般監聽網路變化是在 AndroidManifest 中註冊 BroadcastReceiver 來實現。 targetSdkVersion 升級到 24 後,發現靜態註冊廣播的方式要被取消了。 Declaring a broadcastreceiver for andro

GCD實現單個頁面多個網路請求,需要所有網路請求結束後重新整理UI的處理

dispatch_group_t group = dispatch_group_create(); dispatch_queue_t serialQueue = dispatch_queue_create("com.tikeyc.tikeyc", DISPATC

Android 軟鍵盤狀態

近日遇到要檢測軟鍵盤是否顯示或隱藏的問題,搜了一下網上,最後找到一個很簡單的,記錄一下。 activityRoot是activity的根view,就是xml裡面的第一個view,給它設定一個id. final View activityRootView = findView

Android中如何手機電話狀態

問題描述:當應用中需要對來電這一狀態進行處理時(例如來電時顯示來電話號碼歸屬地等),就需要對電話狀態進行監聽。 解決步驟:1.對電話狀態的監聽最好是放在服務中,因為有一種服務的啟動方式可以不依賴於activity的生命週期,即使activity被銷燬,服務依然在後臺執行。因