AFNetworking & Reachability

AFNetworking是對NSURLConnection NSURLSession的一層封裝
雖然運行效率沒有ASIHttpRequest高,但是使用比它簡單
在iOS開發中,使用廣泛

github地址 https://github.com/pokeb/AFNetworking/AFNetworking

AFN的版本選擇


1-AFNetworking對應版本選擇.png

1.AFHTTPSessionManager 發送http請求 處理http響應

是AFN中最重要的對象之一
封裝了HTTP請求的常見處理
GET\POST請求
解析服務器的響應數據

AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];

GET請求

- (NSURLSessionDataTask *)GET:(NSString *)URLString
                   parameters:(id)parameters
                      success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
                      failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

POST請求

- (NSURLSessionDataTask *)POST:(NSString *)URLString
                   parameters:(id)parameters
                      success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
                      failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

文件上傳

- (NSURLSessionDataTask *)POST:(NSString *)URLString
                    parameters:(id)parameters
     constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
                       success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
                       failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure

2.AFNetworkReachabilityManager 監控聯網狀態

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[manager startMonitoring];

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    NSLog(@"%d", status);
}];

提示:要監控網絡連接狀態,必須要先調用單例的startMonitoring方法

3.蘋果官方Reachability 監控聯網狀態

在網絡應用中,需要對用戶設備的網絡狀態進行實時監控,目的是
讓用戶了解自己的網絡狀態,防止一些誤會(比如怪應用無能)
根據用戶的網絡狀態進行智能處理,節省用戶流量,提高用戶體驗
WIFI\3G網絡:自動下載高清圖片
低速網絡:只下載縮略圖
沒有網絡:只顯示離線的緩存數據

蘋果官方提供了一個叫Reachability的示例程序,便于開發者檢測網絡狀態
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

Reachability的使用:
1>添加框架SystemConfiguration.framework
2>添加源代碼Reachability.h Reachability.m
3>包含頭文件 #import "Reachability.h"

常見用法
// 是否WIFI
+ (BOOL) IsEnableWIFI {
    return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
}

// 是否3G
+ (BOOL) IsEnable3G {
    return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
}

// 網絡狀態監控
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(reachabilityChanged:) 
                                             name:kReachabilityChangedNotification 
                                           object:nil];
self.netReachability = [Reachability reachabilityForInternetConnection];
[self.netReachability startNotifier];

- (void)dealloc{
    [self.netReachability stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
}

4.AFNetworking架構圖

2-AFNetworking架構圖.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容