使用AFNetworking 2.x版本的注意啦

作者: cbd0bfba9942 | 来源:发表于2016-05-25 14:51 被阅读2766次

    Reachability 这个类用到的一定要看
    因为这个文章讲的就是这个类兼容IPV6的方法
    查看项目中 AFNetworkReachabilityManager Class 是否包含AF_INET、struct sockaddr_in 。
    如下

    + (instancetype)reachabilityForInternetConnection
    {
        struct sockaddr_in zeroAddress;
        bzero(&zeroAddress, sizeof(zeroAddress));
        zeroAddress.sin_len = sizeof(zeroAddress);
        zeroAddress.sin_family = AF_INET;
        
        return [self reachabilityWithAddress:&zeroAddress];
    }
    

    如果发现项目中使用了,为了适配IPV6,但又不想迁移到 AFNetworking 3.0。那么请你将 最新版 AFNetworking中的AFNetworkReachabilityManager class 替换当前项目中的这个类。
    新版本中已经针对系统版本做了单独的处理。
    如下:

    + (instancetype)sharedManager {
        static AFNetworkReachabilityManager *_sharedManager = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _sharedManager = [self manager];
        });
    
        return _sharedManager;
    }
    
    + (instancetype)manager
    {
    #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
        struct sockaddr_in6 address;
        bzero(&address, sizeof(address));
        address.sin6_len = sizeof(address);
        address.sin6_family = AF_INET6;
    #else
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_len = sizeof(address);
        address.sin_family = AF_INET;
    #endif
        return [self managerForAddress:&address];
    }
    
    

    相关文章

      网友评论

        本文标题:使用AFNetworking 2.x版本的注意啦

        本文链接:https://www.haomeiwen.com/subject/wrdtdttx.html