# MNetworkModel (opens new window)

# 该框架是基于 NSURLSession 原生组件编写,该组件是一个高度可配置的容器,通过使用其提供的API,可对网络进行细粒度的管理控制。

# 该组件集成至所有素+系列IOS应用内,其组件内部抽象程度和调用程度较高。

# 说明

  • 快速构建业务场景,组件对数据交互进行反射处理
  • 集成公司内部统一TOKEN 安全机制,并集成多TOKEN并存机制
  • 支持弱网自动识别并发起三次请求、引入分类以及错误逻辑处理等机制,为使用者提供业务场景便利。
  • 支持异步和链式请求方式,仅支持POST请求(可根据需要进行拓展请求方式)
  • 整体框架设计参考YTKNetwork (opens new window)

# 安装

在项目 Podfile 文件内添加

pod 'MNetworkModel',:git => 'http://192.168.100.254:3000/iosteam/MNetworkModel.git', :branch => 'delete_unuse_file'

在项目目录下执行脚本

pod install

插件即可集成至项目内

# 使用

首先需要全局配置

NetworkCenter (opens new window) 是单例对象,配置全局网络请求参数,属性过多不一一列举,可具体参考文件属性声明以及注释

+ (instancetype)sharedInstance;

该文件还提供多TOKEN机制管理可参考NetworkCenter+Token.h (opens new window) 分类所提供API,最为主要的是这个指定当前的Token。

- (void)targetAtNetworkURLDelegate:(id<NetworkURLDelegate>)urlDelegate;

可以翻阅组件内可以看URLDelegateInfo (opens new window)NetworkURLDelegate (opens new window) 协议的实例化,其中仅提供两个初始化对象方法

- (instancetype)initWithType:(NetworkURLType)urlType host:(NSString *)host;
- (instancetype)initWithType:(NetworkURLType)urlType host:(NSString *)host authInfo:(AuthInfo *)authInfo;

其次发起请求具体分为两个步骤

1.实例化出NetworkRequest (opens new window) 对象

2.调用NSObject+NetworkRequest (opens new window) 所提供的API发起网络请求

NetworkRequest对象虽然只提供两个初始化方法,但NetworkRequest和基类MBaseRequest提供了丰富的属性进行请求配置,网络请求结果会从*NetworkCompletedBlock中返回。因涉及太多属性不一一列举,可参考源文件。

- (instancetype)initWithResponseBlock:(NetworkCompletedBlock)responseBlock;

NetworkCompletedBlock声明如下

//网路请求Block
typedef void (^NetworkCompletedBlock)(BOOL isSuccess, NetworkRequest * _Nullable request, NetworkResponse * _Nullable response);

调用 NSObject+NetworkRequest (opens new window) 所以提供的API即可发起网络请求。因调用入口是使用NSObject分类编写,即可以在所有的继承NSObject的对象上使用网络请求。 该API提供异步和链式请求方式,并重载了多个方法提供适用不同场景的API,方便复杂业务场景使用。

/**
 * 异步发起请求
 * @param request  请求对象
 */
- (void)asynStartRequest:(NetworkRequest *)request;

/**
 * 异步发起请求
 @param request  请求对象
 @param sendNetworkTarget 指定谁发起请求 作用当请求失败后,会判断当前的object有么实现 NetworkNothingProtocol 方法
 */
- (void)asynStartRequest:(NetworkRequest *)request withSendNetworkTarget:(id<NetworkNothingProtocol> )sendNetworkTarget;

/**
异步发起请求

 @param request 请求对象
 @param visableView 在指定View上显示Tip
 */
- (void)asynStartRequest:(NetworkRequest *)request visableView:(UIView *)visableView;


/**
 队列发起请求

 @param request 请求对象
 @param visableView 在指定View上显示Tip
 */
- (void)queuePushRequest:(NetworkRequest *)request visableView:(UIView *)visableView;


/**
 * 异步发起请求
 @param request  请求对象
 @param visableView isableView 在指定View上显示Tip
 @param sendNetworkTaget 指定谁发起请求 作用当请求失败后,会判断当前的object有么实现 NetworkNothingProtocol 方法
 */
- (void)asynStartRequest:(NetworkRequest *)request visableView:(UIView *)visableView withSendNetworkTarget:(id<NetworkNothingProtocol> )sendNetworkTarget;


至此网络组件介绍完毕。

最后更新时间: 11/24/2021, 7:45:32 AM