關於診斷當前網絡狀態的小Demo

// AFN診斷網絡的封裝實現

JWTestNetStateTool.h

#import <Foundation/Foundation.h>

typedef void(^HaveNetBlock)();

@interface JWTestNetStateTool : NSObject

+ (void)testCurrentNetState:(UIViewController *)vc

               HaveNetBlock:(HaveNetBlock)block;

@end



JWTestNetStateTool.m


#import "JWTestNetStateTool.h"

#import "AFNetworking.h"   //導入AFN三方框架

@implementation JWTestNetStateTool

+ (void)testCurrentNetState:(UIViewController *)viewController

               HaveNetBlock:(HaveNetBlock)block

{

     //  無網絡時彈出彈框提醒用戶當前無網

    UIAlertAction *action = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

        

        

    }];

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告!" message:@"網絡連接失敗" preferredStyle:UIAlertControllerStyleAlert];

    [alert addAction:action];


//  開始監測網絡狀態

    [[AFNetworkReachabilityManager sharedManager]startMonitoring];


//    創建block匿名函數之前一般需要對self進行weak化,否則造成循環引用無法釋放controller:

    __weak typeof(viewController) weakSelf = viewController;

    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

        

        switch (status)

        {

            case AFNetworkReachabilityStatusUnknown:

                // 回調處理

                break;

            case AFNetworkReachabilityStatusNotReachable:

                [weakSelf presentViewController:alert animated:YES completion:^{

                    

                    

                }];

                break;

            case AFNetworkReachabilityStatusReachableViaWWAN:

                break;

            case AFNetworkReachabilityStatusReachableViaWiFi:

                block();

                break;

        }

    }];


}

@end



// ViewController裏使用

導入頭文件



 [JWTestNetStateTool testCurrentNetState:self HaveNetBlock:^{

        

        

    }];


UIViewController位置爲 self

block裏面爲網絡請求內容



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章