基于AFNetworking的网络库,使用Delegate为交互方式,加入了一些业务增强和性能优化,详细文档
特色功能[x] 自定义Key签名参数
[x] 缓存不止支持GET,还支持POST
[x] 支持用IP替换域名,达到提高网络性能,支持HTTP HEAD设置
[x] JJAPIService的扩展支持拦截器,可以添加和删除任意JJAPIService
安装环境iOS 8.0以上
Xcode 7.3以上
如何安装Podfilesource 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'TargetName' do pod 'JJNetwork' end执行命令:
$ pod install使用Carthage集成在你的Cartfile文件里,加入以下内容:
github 'AFNetworking/AFNetworking' ~> 3.0 github 'jezzmemo/JJNetwork'将 AFNetworking.framework,JJNetwork.framework 两个framework加入到自己的项目
特色功能使用使用自定义Key签名参数,实现 JJRequestProtocol 的以下方法:- (BOOL)isSignParameter{ return YES; } - (NSString*)signParameterKey{ return @'key'; }GET和POST都支持缓存,实现 JJRequestProtocol 的以下方法:ReloadFromNetwork: 只从网络获取
ReloadFromCacheElseLoadNetwork: 有缓存就从缓存获取,没有就从网路获取
ReloadFromCacheTimeLimit: 缓存限定的时间范围内
- (HTTPCachePolicy)requestCachePolicy{ return ReloadFromCacheTimeLimit; } - (NSUInteger)cacheLimitTime{ return 120; }支持用IP替换域名(服务器要支持IP访问),达到提高网络性能,支持HTTP HEAD设置JJAPIDominIPModule
@interface DomainModule : NSObject<JJAPIDominIPModule> @end @implementation DomainModule - (NSDictionary*)domainIPData{ return @{@'api.imemo8.com':@'218.244.140.1'}; } @endJJAPIHttpHeadModule
@interface HttpHeadModule : NSObject<JJAPIHttpHeadModule> @end @implementation HttpHeadModule - (NSDictionary*)customerHttpHead{ return @{@'user-token':@'xxxxx',@'device-id':@'xxxxx'}; } @end并注册到JJAPIService+Extension
[JJAPIService registerDomainIP:[[DomainModule alloc] init]]; [JJAPIService registerHttpHeadField:[[HttpHeadModule alloc] init]];拦截器的使用从JJAPIService实例化对象的serviceInterseptor的属性,论文,并实现JJAPIServiceInterseptor协议:
- (DemoAPIService*)apiService{ if (_apiService != nil) { return _apiService; } _apiService = [[DemoAPIService alloc] init]; _apiService.serviceProtocol = self; _apiService.serviceInterseptor = self; return _apiService; }JJAPIService 的扩展实现以下方法,开题报告,可以监听任意JJAPIService子类:
+ (void)addServiceInterseptor:(id<JJAPIServiceInterseptor>)interseptor forServiceClass:(Class)className; + (void)removeServiceInterseptor:(id<JJAPIServiceInterseptor>)interseptor forServiceClass:(Class)className;使用如下:
[JJAPIService addServiceInterseptor:self forServiceClass:[DemoAPIService class]];https://github.com/jezzmemo/JJNetwork