xn_base_Client_AF.h 3.66 KB
//
//  xn_base_Client_AF.h
//  xn_base_ios
//
//  Created by 钱鋆 on 15/12/16.
//  Copyright © 2015年 xn. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BaseResponse.h"
#import "BaseRequest.h"

#import "AFNetworking.h"
#import "AFNetworkReachabilityManager.h"

// 默认的出错信息
static NSString * const  kDefaultMsg = @"系统后台接口出错";
// 初始化出错信息用
static NSString * const  kNoError = @"NoError!";

// 回调通知名常量
#define kResponseNotiName @"kResponseNoti"
// 回调通知key定义-response的tag
#define kResponseNotiKey_tag @"tag"
// 回调通知key定义-response返回的baseResponse
#define kResponseNotiKey_baseResponse @"baseResponse"
// 回调通知key定义-response返回的error
#define kResponseNotiKey_error @"error"

#ifdef DEBUG
// 是否显示api的系统错误
#define kShowSysErr            1
#else
#define kShowSysErr            0
#endif

#pragma mark -后台请求任务协议
@protocol backgourndTaskDelegate <NSObject>
@required
// 后台请求的回调
-(void)l_backgourndTask:(NSDictionary *)userInfo;
@end

#pragma mark -前台任务协议
@protocol foregroundTaskDelegate <NSObject>
@required
// 前台请求的回调
-(void)l_foregroundTask:(NSDictionary *)userInfo;
@end

typedef void(^COMPLETIONBLOCK)(NSDictionary *_dict);

@interface xn_base_Client_AF : NSObject{
    // 后台url
    NSString *_str_url;
    // 后台appKey
    NSString *_str_key;
    // 后台appSecret
    NSString *_str_secret;
    // 任务最大并发数
    NSInteger _integer_maxTask;
    // 出错信息
    NSString *_str_err;
    // 后台任务的tag数组
    NSMutableArray *_muArr_backgroundTaskTags;
}

// Delegate
@property (weak,nonatomic)id<backgourndTaskDelegate> backgourndTaskDelegate;
@property (weak,nonatomic)id<foregroundTaskDelegate> foregroundTaskDelegate;
/**
 *  @author qianjun
 *
 *  @brief AFHTTPSessionManager
 */
@property(atomic,retain)AFHTTPSessionManager *manager;

#pragma mark -创建单例
/**
 *  @author qianjun
 *
 *  @brief  创建单例
 *
 *  @return self
 */
+ (instancetype)sharedInstance;

#pragma mark -配置后台连接参数
/**
 *  @author qianjun
 *
 *  @brief 配置后台连接信息
 *
 *  @param urlString 连接地址
 *  @param appKey    key
 *  @param appSecret secret
 *  @param maxTask 任务最大并发操作数
 */
-(void)f_configByUrl:(NSString *)urlString appKey:(NSString *)appKey appSecret:(NSString *)appSecret maxTask:(NSInteger)maxTask;

#pragma mark - 以异步方式发送请求(AF没有同步方法)
/**
 *  @author qianjun
 *
 *  @brief 以异步方式发送请求(AF没有同步方法)
 *
 *  @param request 发送的请求对象
 *  @param isPost  是否是Post请求
 *  @param tag     请求的下标(用于异步完成后的通知判定)
 */
-(void)f_sendRequest:(BaseRequest *)request isPost:(BOOL)isPost tag:(NSInteger)tag;

#pragma mark -取消所有任务
/**
 *  @author qianjun
 *
 *  @brief 取消所有任务
 */
-(void)f_cancelAllTask;

#pragma mark -挂起当前所有任务
/**
 *  @author qianjun
 *
 *  @brief 挂起当前所有任务
 */
-(void)f_suspendAllTask;

#pragma mark -返回当前剩余任务数
/**
 *  @author qianjun
 *
 *  @brief 返回当前剩余任务数
 */
-(NSInteger)f_getCurrentTaskCount;

#pragma mark -执行当前剩余任务(一般是用在挂起后)
/**
 *  @author qianjun
 *
 *  @brief 执行当前剩余任务(一般是用在挂起后)
 */
-(void)f_resumeAllTask;

#pragma mark -添加后台请求的tag
/**
 *  @author qianjun
 *
 *  @brief 添加后台请求的tag
 *
 *  @param tags tag数组
 */
-(void)f_addBackgroundTaskTags:(NSArray *)tags;

-(void)f_sendRequest:(BaseRequest *)request isPost:(BOOL)isPost completion:(COMPLETIONBLOCK)block;

@end