JLChen
2021-03-02 caccf34369c5bb7c26c32f266d6726bde218cad6
2021-03-02 1.封装网络请求方法
13个文件已修改
673 ■■■■■ 已修改文件
Demo/Demo/EZOpenSDKDemo.xcodeproj/project.pbxproj 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.h 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZSDK.h 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZSDK.m 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/GlobalKit.h 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/GlobalKit.m 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/ResponseData.h 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/ResponseData.m 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceResultViewController.m 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZSettingViewController.m 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Demo/Demo/EZOpenSDKDemo.xcodeproj/project.pbxproj
@@ -317,7 +317,7 @@
                    0D8CF36B1BDF1ABA00A50266 = {
                        CreatedOnToolsVersion = 7.1;
                        DevelopmentTeam = BVTA78PRYA;
                        ProvisioningStyle = Automatic;
                        ProvisioningStyle = Manual;
                        SystemCapabilities = {
                            com.apple.AccessWiFi = {
                                enabled = 0;
@@ -576,7 +576,7 @@
                CODE_SIGN_ENTITLEMENTS = EZOpenSDKDemo/EZOpenSDK.entitlements;
                CODE_SIGN_IDENTITY = "Apple Development";
                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
                CODE_SIGN_STYLE = Automatic;
                CODE_SIGN_STYLE = Manual;
                CURRENT_PROJECT_VERSION = 200628;
                DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
                DEVELOPMENT_TEAM = BVTA78PRYA;
@@ -608,7 +608,7 @@
                PRODUCT_BUNDLE_IDENTIFIER = com.hdl.onpro;
                PRODUCT_NAME = EZOpenSDK;
                PROVISIONING_PROFILE = "";
                PROVISIONING_PROFILE_SPECIFIER = "";
                PROVISIONING_PROFILE_SPECIFIER = "ComHdlOnProDevelopment20210221-1";
                VALID_ARCHS = "arm64 armv7 armv7s";
                WRAPPER_EXTENSION = app;
            };
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.h
@@ -7,14 +7,48 @@
//
#import <Foundation/Foundation.h>
#import "ResponseData.h"
NS_ASSUME_NONNULL_BEGIN
/// 河东接口网络请求工具类
@interface EZHttpUtil : NSObject
#pragma mark -接口
/**
 *  基础服务的接口都要校验sign
 *  @since 河东获取子账号token的接口
 *
 *  @param block 回调block
 */
+(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params;
+ (void)getChildToken:(void (^)(NSString *accessToken))block;
/**
 *  @since 河东添加设备的接口
 *  根据设备序列号和设备验证码添加设备接口
 *
 *  @param deviceSerial 设备序列号
 *  @param verifyCode   设备验证码
 *  @param completion   回调block,error为空时表示添加成功
 *
 *  @return operation
 */
+ (void)addDeviceByHDL:(NSString *)deviceSerial
                verifyCode:(NSString *)verifyCode
                completion:(void (^)(ResponseData *responseData))completion;
/**
 *  @since 河东删除设备的接口
 *  根据设备序列号删除设备接口
 *
 *  @param deviceSerial 设备序列号
 *  @param completion   回调block,error为空时表示添加成功
 *
 *  @return operation
 */
+ (void)deleteDeviceByHDL:(NSString *)deviceSerial completion:(void (^)(ResponseData *responseData))completion;
@end
NS_ASSUME_NONNULL_END
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZHttpUtil.m
@@ -9,19 +9,228 @@
#import "EZHttpUtil.h"
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>
#import "AFNetworking.h"
#pragma mark API
#define API_POST_EZ_AddDevice @"/home-wisdom/platform/childAddDevice"
#define API_POST_EZ_GetChildToken @"/home-wisdom/platform/childToken"
#define API_POST_EZ_ChildDelDevice @"/home-wisdom/platform/childDelDevice"
#define API_POST_EZ_RefreshToken @"/smart-footstone/member/oauth/login"
#pragma mark APP_KEY
#define APP_KEY @"HDL-HOME-APP-TEST"
#define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"
@implementation EZHttpUtil
#pragma mark -接口请求部分
/**
 *  @since 河东获取子账号token的接口
 *
 *  @param block 回调block
 */
+ (void)getChildToken:(void (^)(NSString *accessToken))block{
    //2.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    parameters = [self GetSignRequestDictionary:parameters];
    [self requestHttpsPost:API_POST_EZ_GetChildToken parameters:parameters completion:^(ResponseData *responseData) {
        if (block) {
            NSString * token = @"";
            if(responseData.success){
                token = responseData.data[@"accessToken"];
            }
            block(token);
        }
    }];
//    return task;
}
/**
 *  @since 河东添加设备的接口
 *  根据设备序列号和设备验证码添加设备接口
 *
 *  @param deviceSerial 设备序列号
 *  @param verifyCode   设备验证码
 *  @param completion   回调block,error为空时表示添加成功
 *
 *  @return operation
 */
+ (void)addDeviceByHDL:(NSString *)deviceSerial
                              verifyCode:(NSString *)verifyCode
                              completion:(void (^)(ResponseData *responseData))completion{
    //2.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
    [parameters setValue:verifyCode forKey:@"validateCode"];
    parameters = [self GetSignRequestDictionary:parameters];
   [self requestHttpsPost:API_POST_EZ_AddDevice parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            completion (responseData);
        }
    }];
//    return task;
}
/**
 *  @since 河东删除设备的接口
 *  根据设备序列号删除设备接口
 *
 *  @param deviceSerial 设备序列号
 *  @param completion   回调block,error为空时表示添加成功
 *
 *  @return operation
 */
+ (void)deleteDeviceByHDL:(NSString *)deviceSerial completion:(void (^)(ResponseData *responseData))completion{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
    parameters = [self GetSignRequestDictionary:parameters];
    [self requestHttpsPost:API_POST_EZ_ChildDelDevice parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            completion (responseData);
        }
    }];
//    return task;
}
/// 刷新token
/// @param block 结果
+ (void)refreshHDLToken:(void (^)(BOOL isSuccess))block{
    //1.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    [parameters setValue:GlobalKit.shareKit.hdlRefreshToken forKey:@"refreshToken"];
    [parameters setValue:@"refresh_token" forKey:@"grantType"];
    [parameters setValue:@"APP" forKey:@"platform"];
    parameters = [self GetSignRequestDictionary:parameters];
    [self requestHttpsBase:API_POST_EZ_RefreshToken parameters:parameters completion:^(ResponseData *responseData) {
        if (block) {
            if (responseData) {
                if(responseData.success){
                    [EZSDK setHDlAccessToken:
                     [NSString stringWithFormat:@"%@%@",responseData.data[@"headerPrefix"], responseData.data[@"accessToken"]]
                                refreshToken:responseData.data[@"refreshToken"]];
                    block(YES);
                    return;
                }
            }
            block(NO);
        }
    }];
//    return task;
}
#pragma mark HttpUtil
/// 通用  请求服务器方法
/// @param apiPath 接口地址
/// @param parameters 请求参数
/// @param completion 请求响应参数
+ (void)requestHttpsPost:(NSString *)apiPath
                                parameters:(NSMutableDictionary *)parameters
              completion:(void (^)(ResponseData *responseData))completion{
    [self requestHttpsBase:apiPath parameters:parameters completion:^(ResponseData *responseData) {
        if (completion) {
            if([responseData.code isEqual:@"10001"]){
                //刷新token
                [self refreshHDLToken:^(BOOL isSuccess) {
                    if (isSuccess) {
                        //刷新token成功,重新请求一次
                        [self requestHttpsBase:apiPath parameters:parameters completion:^(ResponseData *responseData) {
                            completion(responseData);
                            return;
                        }];
                    }
                }];
            }
            completion(responseData);
        }
    }];
}
/// 通用  请求服务器方法
/// @param apiPath 接口地址
/// @param parameters 请求参数
/// @param completion 请求响应参数
+ (void)requestHttpsBase:(NSString *)apiPath
                                parameters:(NSMutableDictionary *)parameters
                                completion:(void (^)(ResponseData *responseData))completion{
    //1,创建你得请求url
    NSString *URL = @"";
    if([GlobalKit shareKit].GlobalRequestHttpsHost == NULL){
        URL = @"https://test-gz.hdlcontrol.com";
    }
    URL = [NSString stringWithFormat:@"%@%@", URL, apiPath];
//    NSURLSessionDataTask * task=nil;
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer = responseSerializer;
    //3.request
    NSMutableURLRequest * request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"post" URLString:URL parameters:parameters error:nil];
    request.timeoutInterval = 10.0f;
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:GlobalKit.shareKit.hdlAccessToken forHTTPHeaderField:@"Authorization"];
    //4.dataTaskWithRequest
    [[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        if (completion) {
            ResponseData *responseData = [[ResponseData alloc] init];
            responseData.code = @"-1";
            if(responseObject != NULL){
                //4.解析拿到的响应数据
                NSLog(@"%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);
                NSDictionary * outDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
                responseData = [[ResponseData alloc] initWithDictionary:outDic];
            }
            if (!responseData) {
                responseData = [[ResponseData alloc] init];
            }
            completion(responseData);
        }
    }]resume];
//    return task;
}
/**
 *  基础服务的接口都要校验sign
 */
+(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params{
    if(params == NULL){
        params =[NSMutableDictionary dictionary];
    }
    UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000;
    [params setValue:APP_KEY forKey:@"appKey"];
    [params setValue:@"" forKey:@"timestamp"];
    [params setValue:[NSString stringWithFormat:@"%llu",recordTime] forKey:@"timestamp"];
    //1.对KEY升序
    NSArray *keyArray = [params allKeys];
    NSArray *sortKeyArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
@@ -51,6 +260,9 @@
    return params;
}
/**
 MD5转换+转小写
 */
+ (NSString*)signMD5Encrypt:(NSString *)str
{
    const char *cStr = [str UTF8String];
@@ -81,4 +293,5 @@
    return true;
}
@end
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZSDK.h
@@ -7,6 +7,7 @@
#import <Foundation/Foundation.h>
@interface EZSDK : NSObject
/**
 初始化SDK
@@ -17,6 +18,10 @@
 设置SDK的accessToken
 */
+(void)setEZAccessToken:(NSString *) accessToken;
/**
 设置HDLSDK的accessToken
 */
+(void)setHDlAccessToken:(NSString *) accessToken refreshToken:(NSString *) refreshToken;
/**
 直接跳转到萤石摄像头列表
 */
@@ -37,31 +42,5 @@
 回放播放历史
 */
+(void)playBackVideo:(NSObject*)deviceInfo;
#pragma mark -接口
/**
 *  @since 河东获取子账号token的接口
 *
 *  @param block 回调block
 */
+ (NSURLSessionDataTask *)getChildToken:(void (^)(NSString *accessToken))block;
/**
 *  @since 河东添加设备的接口
 *  根据设备序列号和设备验证码添加设备接口
 *
 *  @param deviceSerial 设备序列号
 *  @param verifyCode   设备验证码
 *  @param completion   回调block,error为空时表示添加成功
 *
 *  @return operation
 */
+ (NSURLSessionDataTask *)addDeviceByHDL:(NSString *)deviceSerial
                verifyCode:(NSString *)verifyCode
                completion:(void (^)(NSError *error))completion;
@end
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/EZSDK.m
@@ -18,16 +18,9 @@
#import "EZPlaybackViewController.h"
#import "EZDeviceTableViewController.h"
#import "EZHCNetDeviceSDK.h"
#import "AFNetworking.h"
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonDigest.h>
#define API_POST_EZ_AddDevice @"/home-wisdom/platform/child/device/add"
#define API_POST_EZ_GetChildToken @"/home-wisdom/platform/childToken"
#define APP_KEY @"HDL-HOME-APP-TEST"
#define SECRET_KEY @"WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss"
@implementation EZSDK
@@ -68,7 +61,14 @@
    [EZOPENSDK setAccessToken:accessToken];
}
/**
 设置HDLSDK的accessToken
 */
+(void)setHDlAccessToken:(NSString *) accessToken refreshToken:(NSString *) refreshToken
{
    [[GlobalKit shareKit] setHdlAccessToken:accessToken];
    [[GlobalKit shareKit] setHdlRefreshToken:refreshToken];
}
//获取当前屏幕显示的viewcontroller   (这里面获取的相当于rootViewController)
+(UINavigationController *)getCurrentVC
@@ -288,175 +288,6 @@
//    }
//}
#pragma mark -接口请求部分
/**
 *  @since 河东获取子账号token的接口
 *
 *  @param block 回调block
 */
+ (NSURLSessionDataTask *)getChildToken:(void (^)(NSString *accessToken))block{
    //1,创建你得请求url
    NSString *URL = @"";
    if([GlobalKit shareKit].GlobalRequestHttpsHost == NULL){
        URL = @"https://test-gz.hdlcontrol.com";
    }
    URL = [NSString stringWithFormat:@"%@%@", URL, API_POST_EZ_GetChildToken];
    
    //2.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    parameters = [self GetSignRequestDictionary:parameters];
    NSURLSessionDataTask*task=nil;
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer = responseSerializer;
    NSMutableURLRequest * request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"post" URLString:URL parameters:parameters error:nil];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:GlobalKit.shareKit.hdlAccessToken forHTTPHeaderField:@"Authorization"];
    [[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        //4.解析拿到的响应数据
        NSLog(@"%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);
        if (block) {
            NSString * token = @"";
            block (token);
        }
    }]resume];
    return task;
}
/**
 *  @since 河东添加设备的接口
 *  根据设备序列号和设备验证码添加设备接口
 *
 *  @param deviceSerial 设备序列号
 *  @param verifyCode   设备验证码
 *  @param completion   回调block,error为空时表示添加成功
 *
 *  @return operation
 */
+ (NSURLSessionDataTask *)addDeviceByHDL:(NSString *)deviceSerial
                              verifyCode:(NSString *)verifyCode
                              completion:(void (^)(NSError *error))completion{
    //1,创建你得请求url
    NSString *URL = @"";
    if([GlobalKit shareKit].GlobalRequestHttpsHost == NULL){
        URL = @"https://test-gz.hdlcontrol.com";
    }
    URL = [NSString stringWithFormat:@"%@%@",URL, @"/smart-footstone/region/regionByAccount"];
    //2.设置请求参数
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
    //    [parameters setValue:deviceSerial forKey:@"deviceSerial"];
    //    [parameters setValue:verifyCode forKey:@"verifyCode"];
    //    parameters[@"deviceSerial"] = deviceSerial;
    //    parameters[@"verifyCode"] = verifyCode;
    parameters[@"account"] = @"18824864143";
//    parameters = [self GetSignRequestDictionary:parameters];
    NSURLSessionDataTask*task=nil;
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer = responseSerializer;
    NSMutableURLRequest * request = [[AFJSONRequestSerializer serializer] requestWithMethod:@"post" URLString:URL parameters:parameters error:nil];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
        //            //拿到响应头信息
        //            NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
        //4.解析拿到的响应数据
        NSLog(@"%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);
        if (completion) {
//            error.code = 105002;
            completion (error);
        }
    }]resume];
    return task;
}
#pragma mark HttpUtil
/**
 *  基础服务的接口都要校验sign
 */
+(NSMutableDictionary *)GetSignRequestDictionary:(NSMutableDictionary *)params{
    if(params == NULL){
        params =[NSMutableDictionary dictionary];
    }
    UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000;
    [params setValue:APP_KEY forKey:@"appKey"];
    [params setValue:[NSString stringWithFormat:@"%llu",recordTime] forKey:@"timestamp"];
    //1.对KEY升序
    NSArray *keyArray = [params allKeys];
    NSArray *sortKeyArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [obj1 compare:obj2 options:NSNumericSearch];
    }];
    //2.2 拼接按URL键值对
    NSString *newString = @"";
    for(NSString *key in sortKeyArray){
        if(params[key] != NULL){
            NSString *valueStr = params[key];
            //检测当前参数是否需要参与校验
            if([self IfValueNeedSign:valueStr]){
                newString = [newString stringByAppendingString:[NSString stringWithFormat:@"%@=%@&", key,valueStr]];
            }
        }
    }
    //2.3 拼接SECRET_KEY
    newString = [newString substringToIndex:[newString length] - 1];
    newString = [newString stringByAppendingString: SECRET_KEY];
    //2.4 MD5转换+转小写
    if(newString == nil || newString == NULL){
        newString = @"";
    }
    NSString* signstr = [self signMD5Encrypt:newString];
    [params setValue:signstr forKey:@"sign"];
    return params;
}
/**
 MD5转换+转小写
 */
+ (NSString*)signMD5Encrypt:(NSString *)str
{
    const char *cStr = [str UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, strlen(cStr),digest );
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
    [result appendFormat:@"%02x", digest[i]];
    return result;
}
/// <summary>
/// 判断当前值是否需要参与签名,保持跟云端一致
/// 空字符串不参与
/// 数组,集合,对象不参与
/// </summary>
/// <param name="valueStr"></param>
/// <returns></returns>
+(bool)IfValueNeedSign:(NSString *)valueStr{
    if (( (valueStr == nil || [valueStr isKindOfClass:[NSNull class]] || valueStr.length == 0))//判空字符
        || ([[valueStr substringToIndex:1] isEqual:@"{"])//判断是否为对象
        || ([[valueStr substringToIndex:1] isEqual:@"["])//判断是否为数组
        ) {
        return false;
    }
    return true;
}
@end
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/GlobalKit.h
@@ -20,6 +20,7 @@
@property (nonatomic, copy) NSString *GlobalRequestHttpsHost;
@property (nonatomic, copy) NSString *hdlAccessToken;
@property (nonatomic, copy) NSString *hdlRefreshToken;
@property (nonatomic, copy) NSString *accessToken;
@property (nonatomic, copy) NSString *deviceSerialNo;  //设备序列号
@@ -34,7 +35,7 @@
- (void)clearDeviceInfo;
+(void)hello;
//+(void)hello;
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/GlobalKit.m
@@ -8,6 +8,10 @@
#import "GlobalKit.h"
#define EZOpenSDKAccessToken @"EZOpenSDKAccessToken"
#define EZhdlAccessToken @"EZhdlAccessToken"
#define EZhdlRefreshToken @"EZhdlRefreshToken"
@implementation GlobalKit
+ (instancetype)shareKit
@@ -25,7 +29,10 @@
    self = [super init];
    if (self)
    {
        _accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"EZOpenSDKAccessToken"];
        _accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:EZOpenSDKAccessToken];
        _hdlAccessToken = [[NSUserDefaults standardUserDefaults] objectForKey:EZhdlAccessToken];
        _hdlRefreshToken = [[NSUserDefaults standardUserDefaults] objectForKey:EZhdlRefreshToken];
        _deviceVerifyCodeBySerial = [NSMutableDictionary new];
    }
    return self;
@@ -35,14 +42,31 @@
- (void)setAccessToken:(NSString *)accessToken
{
    _accessToken = accessToken;
    [[NSUserDefaults standardUserDefaults] setObject:accessToken?:@"" forKey:@"EZOpenSDKAccessToken"];
    [[NSUserDefaults standardUserDefaults] setObject:accessToken?:@"" forKey:EZOpenSDKAccessToken];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)setHdlAccessToken:(NSString *)hdlAccessToken
{
    _hdlAccessToken = hdlAccessToken;
    [[NSUserDefaults standardUserDefaults] setObject:hdlAccessToken?:@"" forKey:EZhdlAccessToken];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)setHdlRefreshToken:(NSString *)hdlRefreshToken
{
    _hdlRefreshToken = hdlRefreshToken;
    [[NSUserDefaults standardUserDefaults] setObject:hdlRefreshToken?:@"" forKey:EZhdlRefreshToken];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)clearSession
{
    _accessToken = nil;
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"EZOpenSDKAccessToken"];
    _hdlRefreshToken = nil;
    _hdlRefreshToken = nil;
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:EZOpenSDKAccessToken];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/ResponseData.h
@@ -10,22 +10,19 @@
NS_ASSUME_NONNULL_BEGIN
/**
 ResponseData
 */
@interface ResponseData : NSObject
/**
 */
/** 响应状态码 */
@property (nonatomic, copy) NSString *code;
/**
 */
/** 错误信息*/
@property (nonatomic, copy) NSString *message;
/**
 */
@property (nonatomic, copy) NSObject *data;
/** 接收数据的字典  */
@property (nonatomic, strong) NSDictionary * __nullable data;
/** 字典处理 */
- (id)initWithDictionary:(NSDictionary *)dic;
/**是否成功*/
- (BOOL)success;
@end
NS_ASSUME_NONNULL_END
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Global/ResponseData.m
@@ -10,4 +10,45 @@
@implementation ResponseData
/// Description
- (BOOL)success
{
    //河东code为0 ,萤石为200 代表成功
    return [self.code isEqual: @"0"] || [self.code isEqual: @"200"]  ;
}
/// 解析返回字典参数
/// @param dic 返回参数
- (id)initWithDictionary:(NSDictionary *)dic
{
    if (self = [super init]) {
        @try {
            if (dic) {
                //1.取出返回数据的状态码
                self.code = [NSString stringWithFormat:@"%@", dic[@"code"]];
                //2.提示信息
                self.message = [dic objectForKey:@"message"];
                //3.返回数据
                NSDictionary *mData = (NSDictionary *)[dic objectForKey:@"data"];
                self.data = mData;
            } else {
                //没有返回数据
                self.message = @"网络错误";
                self.data = nil;
                self.code = @"-2";
            }
        }
            //接收到异常
        @catch (NSException *exception) {
            self.data = dic;
            self.code = @"-1";
        }
        @finally {
        }
    }
    return self;
}
@end
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceResultViewController.m
@@ -14,7 +14,7 @@
#import "EZWifiConfigViewController.h"
#import "EZWifiTipsViewController.h"
#import "MBProgressHUD.h"
#import "EZSDK.h"
@interface EZDeviceResultViewController ()<UIAlertViewDelegate>
@@ -82,12 +82,21 @@
        [GlobalKit shareKit].deviceVerifyCode = [alertView textFieldAtIndex:0].text;
        __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
        hud.labelText = NSLocalizedString(@"ad_adding_msg", @"正在添加,请稍候...");
        [EZOPENSDK addDevice:[GlobalKit shareKit].deviceSerialNo
//        [EZOPENSDK addDevice:[GlobalKit shareKit].deviceSerialNo
//                  verifyCode:[GlobalKit shareKit].deviceVerifyCode
//                  completion:^(NSError *error) {
//                      [hud hide:YES];
//                      [self handleTheError:error];
//                  }];
        [EZHttpUtil addDeviceByHDL:[GlobalKit shareKit].deviceSerialNo
                  verifyCode:[GlobalKit shareKit].deviceVerifyCode
                  completion:^(NSError *error) {
                   completion:^(ResponseData *responseData) {
                      [hud hide:YES];
                      [self handleTheError:error];
                       [self handleTheError:responseData];
                  }];
    }
    else if (alertView.tag == 0xbb && buttonIndex == 1)
    {
@@ -112,12 +121,20 @@
        {
            __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
            hud.labelText = NSLocalizedString(@"ad_adding_msg", @"正在添加,请稍候...");
            [EZOPENSDK addDevice:[GlobalKit shareKit].deviceSerialNo
//            [EZOPENSDK addDevice:[GlobalKit shareKit].deviceSerialNo
//                      verifyCode:[GlobalKit shareKit].deviceVerifyCode
//                      completion:^(NSError *error) {
//                          [hud hide:YES];
//                          [self handleTheError:error];
//                      }];
            [EZHttpUtil addDeviceByHDL:[GlobalKit shareKit].deviceSerialNo
                      verifyCode:[GlobalKit shareKit].deviceVerifyCode
                      completion:^(NSError *error) {
                       completion:^(ResponseData *responseData) {
                          [hud hide:YES];
                          [self handleTheError:error];
                           [self handleTheError:responseData];
                      }];
        }
        else
        {
@@ -212,24 +229,24 @@
}
- (void)handleTheError:(NSError *)error
- (void)handleTheError:(ResponseData *)responseData
{
    if (!error)
    if (responseData.success)
    {
        [self performSegueWithIdentifier:@"go2WifiResult" sender:nil];
        return;
    }
    if (error.code == 105002)
    if ([responseData.code isEqual: @"20010"])
    {
        UIAlertView *retryAlertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"device_verify_code_wrong", @"验证码错误") message:nil delegate:self cancelButtonTitle:NSLocalizedString(@"cancel", @"取消") otherButtonTitles:NSLocalizedString(@"retry", @"重试"), nil];
        retryAlertView.tag = 0xbb;
        [retryAlertView show];
    }
    else if (error.code == 105000)
    else if ([responseData.code isEqual: @"20017"])
    {
        [UIView dd_showMessage:NSLocalizedString(@"ad_already_added",@"您已添加过此设备")];
    }
    else if (error.code == 105001)
    else if ([responseData.code isEqual: @"20013"])
    {
        [UIView dd_showMessage:NSLocalizedString(@"ad_added_by_others",@"此设备已被别人添加")];
    }
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m
@@ -66,6 +66,8 @@
    //    self.title.
    
    self.logoutBtn.title = NSLocalizedString(@"Logout", @"注销");
    self.logoutBtn.title = @"";
    [self.logoutBtn setEnabled: NO];
    
    [self checkEZIsLogin];
}
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZSettingViewController.m
@@ -360,8 +360,25 @@
    {
        __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
        hud.labelText = NSLocalizedString(@"message_deleting", @"正在删除,请稍候...");
        [EZOPENSDK deleteDevice:self.deviceInfo.deviceSerial completion:^(NSError *error) {
            if(!error)
//        [EZOPENSDK deleteDevice:self.deviceInfo.deviceSerial completion:^(NSError *error) {
//            if(!error)
//            {
//                [hud hide:YES];
//                NSArray *viewControllers = self.navigationController.viewControllers;
//                for (UIViewController *vc in viewControllers)
//                {
//                    if([vc isKindOfClass:[EZDeviceTableViewController class]])
//                    {
//                        ((EZDeviceTableViewController *)vc).needRefresh = YES;
//                        [self.navigationController popToViewController:vc animated:YES];
//                        break;
//                    }
//                }
//            }
//        }];
        [EZHttpUtil deleteDeviceByHDL:self.deviceInfo.deviceSerial completion:^(ResponseData *responseData) {
            if(responseData.success)
            {
                [hud hide:YES];
                NSArray *viewControllers = self.navigationController.viewControllers;
@@ -376,6 +393,8 @@
                }
            }
        }];
    }
}
Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m
@@ -49,11 +49,31 @@
//    //push摄像头列表的viewController
//    [self.navigationController pushViewController:instanceVC animated:YES];
    
    [[GlobalKit shareKit] setAccessToken:@"ra.b48ex6o495x0etj76a0a3huh1x91ymvw-8oi8f811ry-15pqyvo-dyuk9nyz4"];
//    [[GlobalKit shareKit] setAccessToken:@"ra.b48ex6o495x0etj76a0a3huh1x91ymvw-8oi8f811ry-15pqyvo-dyuk9nyz4"];
//    /**
//     *  下面代码功能与以上的注释方法相同
//     */
//    [self performSegueWithIdentifier:@"go2CameraList" sender:nil];
    GlobalKit.shareKit.hdlRefreshToken = @"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJlYzRiOTg4MTgxNWI0ZWJjYTEyNTU0ODNmNjg3NjgyMyIsImhlYWRlclByZWZpeCI6IkJlYXJlciAiLCJ0ZW5hbnRJZCI6IjIwIiwidG9rZW5UeXBlIjoicmVmcmVzaF90b2tlbiIsImFwcGxpY2F0aW9uSWQiOiIwIiwidXNlcklkIjoiMTMyODg4NjI3MzAwMzg1NTg3NCIsImV4cCI6MTYxNTI1NjMxMCwibmJmIjoxNjE0NjUxNTEwfQ.CgpIhgGb4U-NB3EvveBg6mBgLKi0H_zdA_RgPhDREmMeVyAH58H4guzutIi2EO7Dw8bkR2PB9n6jP4MQQNaHclN1EaahNQtZ4rHipLrBY0oT35Uz4vw5yXaWAyLG6_FW2Ky4wpqLbSjv9x24yc5cuKNaknruf73V6bNIDnGaEr0";
    GlobalKit.shareKit.hdlAccessToken = @"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmZDgyMDY0ZmJmMGE0YTdmOWFhMmVhOTA0Y2FmNDY3MyIsInJvbGUiOiIiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidXNlckFjY291bnQiOiIxODgyNDg2NDE0MyIsInRlbmFudElkIjoiMjAiLCJ1c2VyVHlwZSI6IlVTRVJfQyIsInRva2VuVHlwZSI6ImFjY2Vzc190b2tlbiIsInVzZXJOYW1lIjoiTEUwMDAiLCJhcHBsaWNhdGlvbklkIjoiMCIsInVzZXJJZCI6IjEzMjg4ODYyNzMwMDM4NTU4NzQiLCJleHAiOjE2MTQ1OTc5MzQsIm5iZiI6MTYxNDU5MDczNH0.e-ghYGplCF5lrMDwNd38RcbCjC79G729-iOMn3ozaEfmuZA_f5ElMvoyUf0Vm64IJMdwScuXPnSzJa2UQPyXNyZJRhpJDR4GKXI7X9VHqWJyrkc-_CJO0puLfB64K3SvKASD-PSHwzRggrmfn5G7GZ1gf-piK1grYurUIT-KaaE";
    __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    hud.labelText = NSLocalizedString(@"ad_adding_msg", @"正在添加,请稍候...");
    [EZHttpUtil getChildToken:^(NSString *accessToken) {
        [hud hide:YES];
        if(accessToken != NULL && ![accessToken isEqual:@""]){
            [[GlobalKit shareKit] setAccessToken:accessToken];
    /**
     *  下面代码功能与以上的注释方法相同
     */
    [self performSegueWithIdentifier:@"go2CameraList" sender:nil];
        }
    }];
}
- (IBAction)logout:(id)sender
@@ -62,20 +82,7 @@
//    [EZOPENSDK logout:^(NSError *error) {
//    }];
    
    __weak MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    [EZSDK addDeviceByHDL:@"" verifyCode:@"" completion:^(NSError *error) {
       
        [hud hide:YES];
        if(!error){
            NSLog(@"请求成功");
        }else{
            NSLog(@"请求失败");
//            NSLog(@"请求失败%@",error.description);
        }
        [self handleTheError:error];
    }];
}
- (void)handleTheError:(NSError *)error