基於AFNetworking的網絡判斷【原創】

首先導入AFNetworking第三方框架,而後將下面的.h和.m放在你新建的類中即可網絡

GGNetworkJudge.h   在最後會有Singleton.h頭文件代碼框架

 1 #import <Foundation/Foundation.h>
 2 #import "AFNetworkReachabilityManager.h"
 3 #import "Singleton.h" //此處是將一個普通類轉化爲單例類的頭文件
 4 
 5 @interface GGNetworkJudge : NSObject
 6 
 7 singleton_interface(GGNetworkJudge);
10 
11 //監測網絡狀態
12 - (void)checkNetworkStatus;
13 
14 @end

 

GGNetworkJudge.mspa

 1 #import "GGNetworkJudge.h"
 2 #import <UIKit/UIKit.h>
 3 
 4 @implementation GGNetworkJudge
 5 singleton_implementation(GGNetworkJudge);
 6 
 7 #pragma mark - 私有方法
 8 #pragma mark 網絡狀態變化提示
 9 -(void)alert:(NSString *)message{
10     UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"系統信息" message:message delegate:nil cancelButtonTitle:@"肯定" otherButtonTitles: nil];
11     [alertView show];
12 }
13 
14 #pragma mark 網絡狀態監測
15 -(void)checkNetworkStatus{
16     
17     AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
18     
19     //開始監控
20     [manager startMonitoring];
21 
22     
23     // 檢測網絡鏈接的單例,網絡變化時的回調方法
24     [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
25         
26         switch (status) {
27             case AFNetworkReachabilityStatusReachableViaWWAN:
28                 //[self alert:@"2G/3G/4G Connection."];
29                 [self alert:@"網絡已鏈接"];
30 
31                 break;
32             case AFNetworkReachabilityStatusReachableViaWiFi:
33                 // [self alert:@"WiFi Connection."];
34                 
35                 [self alert:@"網絡已鏈接"];
36                 break;
37             case AFNetworkReachabilityStatusNotReachable:
38                 //  [self alert:@"Network not found."];
39                 [self alert:@"網絡已斷開,請檢查網絡設置"];
40 
41                 
42                 break;
43                 
44             default:
45                 // [self alert:@"Unknown."];
46                 [self alert:@"網絡未知錯誤"];
47 
48                 break;
49 
50         }
51         
52     }];
53     
54     
55     
56 
57 
58 }
59 
60 
61 @end

 

Singleton.hcode

 1 /*
 2 專門用來保存單例代碼
 3  最後一行不要加 \ 
 4 */
 5 
 6 // @interface
 7 #define singleton_interface(className) \
 8 + (className *)shared##className;
 9 
10 
11 // @implementation
12 #define singleton_implementation(className) \
13 static className *_instance; \
14 + (id)allocWithZone:(NSZone *)zone \
15 { \
16     static dispatch_once_t onceToken; \
17     dispatch_once(&onceToken, ^{ \
18         _instance = [super allocWithZone:zone]; \
19     }); \
20     return _instance; \
21 } \
22 + (className *)shared##className \
23 { \
24     static dispatch_once_t onceToken; \
25     dispatch_once(&onceToken, ^{ \
26         _instance = [[self alloc] init]; \
27     }); \
28     return _instance; \
29 }
相關文章
相關標籤/搜索