zoukankan      html  css  js  c++  java
  • iOS 使用AFNetWorking监听APP网络状态变化(可用于更改缓存策略、提示网络等)

    前言

    我们知道在APP开发过程中。监听手机当前的网络状态还是一个非经常常使用的方法,这里我来为大家接受一种使用AFNetWorking来监听当前的网络状态的方法;网络监听对程序开发的帮助有非常多:比方下载时在不同的网络状态下使用不同下载策略、缓存策略、或者就是一个单纯的提示

    使用控件

    在这里我使用的是AFNetWorking 3.0之前的版本号。我并没有測试过最新的3.0.4版本号能否够正常使用,可是我觉得是不影响的,假设各位在測试过程中,有什么问题的话请直接私信我。

    代码实现

    首先我们新建一个继承与NSObject的类。编写一个单例。

    NetworkingTools.h

    #import <Foundation/Foundation.h>
    #import "AFNetworking.h"
    
    @interface NetworkingTools : NSObject
    
    + (AFHTTPRequestOperationManager *)sharedManager;
    
    @end
    

    NetworkingTools.m

    #import "NetworkingTools.h"
    #import "AFNetworking.h"
    
    @implementation NetworkingTools
    
    + (AFHTTPRequestOperationManager *)sharedManager {
        static AFHTTPRequestOperationManager * manager = nil;
        if (!manager) {
            manager = [AFHTTPRequestOperationManager manager];
        }
    
        return manager;
    }
    
    @end

    能够看到这基本上就是一个非常easy的单例。相信大家都不存在什么问题。


    接下来会给大家看一个方法,也就是监听网络状态的方法。那么这里我推荐能够将这种方法在APPDelegate.m里面进行监听。

    - (void)listenNetWorkingPort{
        [[NSURLCache sharedURLCache] setMemoryCapacity:5 * 1024 * 1024];
        [[NSURLCache sharedURLCache] setDiskCapacity:50 * 1024 * 1024];
    
        AFHTTPRequestOperationManager * manager = [NetworkingTools sharedManager];
    
        // 设置网络状态变化回调
        [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusNotReachable:
    
                    // 设置网络请求的缓存政策
                    manager.requestSerializer.cachePolicy =  NSURLRequestReturnCacheDataDontLoad;
                    NSLog(@"断网状态");
                    //                [UIAlertView showConfigPrompt:NSLocalizedString(@"当前没有网络,请检查你的网络设置", nil)];
                    break;
                case AFNetworkReachabilityStatusReachableViaWWAN:
    
                    // 设置网络请求的缓存政策
                    manager.requestSerializer.cachePolicy =  NSURLRequestReturnCacheDataElseLoad;
                    NSLog(@"4G状态");
    
                    break;
                case AFNetworkReachabilityStatusReachableViaWiFi:
    
                    // 设置网络请求的缓存政策
                    manager.requestSerializer.cachePolicy =  NSURLRequestReloadIgnoringLocalCacheData;
                    NSLog(@"WiFi状态");
                    break;
    
                default:
                    break;
            }
        }];
    
        // 启动网络状态监听
        [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    }

    后记

    眼下为大家带来的都是些比較简单的小技巧和工具,希望和大家共同交流和进步。也非常想写一遍比較充实的干货。可是眼下水平和各方面的限制,就先这样了。

  • 相关阅读:
    杰我教育-新老学员交流会
    来杰我学IT,好就业
    怎么创建maven项目
    项目开发生命周期
    2015年12月28日,我工作了
    SSH架构图及各部分知识点
    jsp基础大全
    网站创建过程(二)
    网站创建过程(一)
    python+Django+mysql环境搭建
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7272193.html
Copyright © 2011-2022 走看看