国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS網絡通訊——監測網絡狀態:Reachability(可達性)

2019-11-14 19:22:51
字體:
來源:轉載
供稿:網友

1.iOS平臺是按照一直有網絡連接的思路來設計的,開發者利用這一特點創造了很多優秀的第三方應用。大多數的iOS應用都需要聯網,甚至有些應用嚴重依賴網絡,沒有網絡就無法正常工作。

2.在你的應用嘗試通過網絡獲取數據之前,你需要知道當前設備是否知道連接上了網絡,甚至有時候你可能還需要知道當前網路是由wifi還是由移動蜂窩網絡提供的。

3.“在網絡訪問失敗的時候,應用沒有做出適當的提示”是蘋果的iOS審核團隊拒絕一個應用的常見理由。蘋果要求你必須先檢測網絡連接狀態,當網絡不可用的時候以某種方式告知用戶,或者用其他優雅的方式進行處理。

 

***********************

Reachability類:

1.這個類用于檢測當前網絡狀態,它不是SDK的一部分,可以在iOS Developer Library里找到這份代碼。

從蘋果網站上下載Reachability.zip文件,解壓之。

2.重用Reachability類

    (1)把Reachability.h和Reachability.m文件拖到項目中。

    (2)添加框架:SystemConfiguration.framework。

3.同步的Reachability

    (1)使用同步的方式是比較簡單,導入Reachability.h頭文件,然后通過代碼檢查網絡:

        #import “Reachability.h”

        。。。some code omitted…

        Reachability *reach = [Reachability reachabilityForInternetConnection];

        NetworkStatus status = [reach currentReachabilityStatus];

     (2)通過檢查某個主機能否訪問來判斷當前網絡是否可用:

        Reachability *reach = [Reachability reachabilityWithHostName:@“www.apple.com”];

        NetworkStatus status = [reach currentReachabilityStatus];

     (3)案例:

        創建一個工程,并添加Reachability.h和Reachability.m到工程中,并鏈接SystemConfiguration.framework.

        在AppDelegate.h頭文件中導入Reachability.h,并添加一個實例方法。如圖:

            

        在AppDelegate.m中這樣實現:如圖:

            

        

4.異步的Reachability

    (1)異步的方式稍微復雜,不過通過這種方式可以來訂閱實時的網絡狀態變化通知。導入Reachability.h頭文件,然后注冊一個對象來訂閱網絡狀態變化的信息,網絡狀態變化的信息名稱為kReachabilityChanged-Notification.如下:

    [[NSNotificationCenter defaultCenter] addObserver:self

        selector:@selector(reachabilityChanged:)

        name:kReachabilityChangedNotification

        object:nil];

    (2)你需要創建一個Reachability對象實例并開始向外發布網絡狀態變化的消息:

        Reachability *reach = [[Reachability reachabilityWithHostName:@“www.apple.com”] retain];

        [reach startNotifier];

    (3)當網絡狀態發生變化的時候,Reachability對象將調用reachabilityChanged:方法,可以在這個方法里面獲取當前的網絡狀態,然后做相應的處理。

        - (void)reachabilityChanged:(NSNotification *)notification{

            Reachability *reach = [notification object];

            if([reach isKindOfClass:[Reachability class]]){

                NetworkStatus status = [reach currentReachabilityStatus];

                //Insert your code here

            }                   

        }

 

****************************

5.原生 Reachability API

前面將的Reachability類實際上是蘋果公司對SCNetworkReachability API的封裝,這個API定義在SystemConfigure.framework庫中。如果有其他特別的需求,也可以直接使用這個原生的SCNetworkReachability類。

 

 


我的CSDN博客地址:http://blog.csdn.net/qw963895582/article


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泗水县| 田林县| 南昌县| 黄山市| 高平市| 富蕴县| 乡城县| 新密市| 紫金县| 桐庐县| 南乐县| 虎林市| 汉川市| 丽水市| 正蓝旗| 准格尔旗| 吉林市| 扬州市| 呼玛县| 昂仁县| 凌海市| 辉南县| 方正县| 西丰县| 扎赉特旗| 白玉县| 新宁县| 谷城县| 龙口市| 定安县| 大名县| 灵璧县| 平谷区| 鄂托克旗| 都兰县| 日土县| 崇左市| 威信县| 海宁市| 绍兴市| 宁海县|