乐橙云开发文档
快速入门
  • 文档综述
  • 云直播开发指南
  • 轻应用开发指南
  • 移动应用开发指南
  • 桌面应用开发指南
  • 消息推送
  • 云转存
  • 国标GB28181设备接入
  • HTTP接口
  • 服务支持
前往官网
快速入门
  • 文档综述
  • 云直播开发指南
  • 轻应用开发指南
  • 移动应用开发指南
  • 桌面应用开发指南
  • 消息推送
  • 云转存
  • 国标GB28181设备接入
  • HTTP接口
  • 服务支持
前往官网
快速入门
  • 文档综述

  • 云直播开发指南

  • 轻应用开发指南

  • 小程序对接指南

  • 移动应用开发指南

    • 应用开发
    • Android

    • IOS

      • OpenSDK组件
      • 标准化demo
    • SDK隐私协议
    • 未成年人个人信息处理规则
  • 桌面应用开发指南

  • 消息推送

  • 云转存

  • 国标GB28181设备接入

  • IOT物模型

  • HTTP接口

  • 服务支持

  • 平台活动

本页目录
iOS OpenSDK对接文档
1. OpenSDK安装
1.1 CocoaPods 安装
1.1.1 CocoaPods引入
1.1.2 路径配置
1.2 压缩包安装
1.2.1 路径配置
1.2.2 系统库配置
1.3 权限申请与配置
2. 初始化
2.1 OpenSDK初始化
2.2 配置OpenSDK日志级别
3. 设备添加功能
3.1 SmartConfig配网添加
3.2 软AP配网添加
4. 实时预览
5. 录像回放
6. 语音对讲
7. 录像下载
8. 数据解密

OpenSDK组件

iOS OpenSDK对接文档

iOS LCOpenSDK作为一整套接入乐橙云的客户端接入框架,可以使开发者在自身iOS应用中快速集成乐橙云视频能力,本OpenSDK只含真机调试的功能,不支持任何模拟器调试,支持Xcode 9.0以上。

iOS OpenSDK 资源下载链接

1. OpenSDK安装

OpenSDK的安装分为两种方式:通过cocoapods安装和手动从官网下载压缩包安装

1.1 CocoaPods 安装

1.1.1 CocoaPods引入

  • 在Podfile文件中添加pod 'LCOpenSDK'语句

  • 执行pod install

备注:如果不能引入则可能是需要更新本地仓库,需执行pod repo update。

安装成功后如下图:

安装成功

1.1.2 路径配置

  • Framework路径:Build Setting->Search Paths->Framework Search Paths添加:

    $(PROJECT_DIR)/Pods/LCOpenSDK/Framework

  • 头文件路径:Build Setting->Search Paths->Header Search Paths添加:

    $(PROJECT_DIR)/Pods/LCOpenSDK/Framework/LCOpenSDKDynamic.framework/Headers/LCOpenSDK

    $(PROJECT_DIR)/Pods/LCOpenSDK/Framework/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK

  • Build Settings->Build Options ->Enable Bitcode设置为NO

1.2 压缩包安装

通过乐橙云开放平台官网下载IOS版本的OpenSDK压缩包到本地进行手动引入,此时引入时要十分注意SDK的路径,以demo为例,OpenSDK位于工程目录下的Depend文件夹下面。

工程结构

1.2.1 路径配置

  • Framework路径:Build Setting->Search Paths->Framework Search Paths添加:

    $(PROJECT_DIR)/Depend

  • 头文件路径:Build Setting->Search Paths->Framework Search Paths添加:

    $(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers

    $(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenSDK

    $(PROJECT_DIR)/Depend/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK

  • 路径:Build Phases->Embed Frameworks添加:

    LCOpenSDKDynamic.framework,Destinations选择Frameworks。

备注:$(PROJECT_DIR)为Demo工程所在目录,按要求添加LCOpenSDKDemo和Depend文件夹(对应iOS_demo和iOS_sdk文件夹);Build Phases ->Embed Frameworks路径如果不存在选择左上角加号,然后选择NEW Copy Files Phase进行添加, 最后双击修改名称为Embed Frameworks。

1.2.2 系统库配置

在工程TARGETS->Build Phases->Link Binary With Libraries下添加如下系统库:

  • CoreAudio.framework

  • MediaPlayer.framework

  • AudioToolbox.framework

  • VideoToolbox.framework

  • OpenGLES.framework

  • MediaAccessibility.framework

  • CoreVideo.framework

  • AVFoundation.framework

  • CoreMedia .framework

  • libz.tbd(libz.dylib)

配置后如下图:

系统库配置

1.3 权限申请与配置

SDK使用需配置相关系统权限,主要包含以下:

  • 相册权限:NSPhotoLibraryUsageDescription

  • 照片存储权限:NSPhotoLibraryAddUsageDescription

  • 麦克风权限:NSMicrophoneUsageDescription

  • 相机权限:NSCameraUsageDescription

  • 本地网络权限:NSLocalNetworkUsageDescription

  • 地理位置权限:NSLocationUsageDescription

备注:设备配网另需组播权限,需从苹果开发者中心申请。

2. 初始化

2.1 OpenSDK初始化

在使用OpenSDK相关功能前需要先进行OpenSDK初始化,初始化涉及开发者用户授权token和平台地址信息,初始化操作主要依赖于我们开放的LCOpenSDK_Api类。

具体代码实现可参考下面:

	/** 初始化平台信息 */
	LCOpenSDK_ApiParam * apiParam = [[LCOpenSDK_ApiParam alloc] init];
	/** 1. 设置协议 */
	apiParam.procotol = PROCOTOL_TYPE_HTTPS;
	/** 2. 设置乐橙云平台服务地址 */
	apiParam.addr = @"openapi.lechange.cn";
	/** 3. 设置服务端口 */
	apiParam.port = 443;
	/** 4. 设置token,token根据AppId和AppSecret调用乐橙云开放平台获取 */
	apiParam.token = @"********";
	/** 5. 调用SDK接口进行初始化平台信息 */
	LCOpenSDK_Api* m_hc = [[LCOpenSDK_Api shareMyInstance] initOpenApi:apiParam];

备注:开放平台获取Token:获取管理员token 或者 获取子用户token

2.2 配置OpenSDK日志级别

OpenSDK提供了日志打印的类LCOpenSDK_Log,开发者可以选择配置合适的日志级别,默认等级为LogLevelTypeFatal。

	// 初始化LCOpenSDK_LogInfo实例对象
    LCOpenSDK_LogInfo *info = [LCOpenSDK_LogInfo new];
	// 赋值日志等级字段
    info.levelType = LogLevelTypeDebug;
	// LCOpenSDK_LogInfo实例配置日志等级
    [[LCOpenSDK_Log shareInstance] setLogInfo:info];

LogLevelType参数说明:

LogLevelTypeFatal = 1,// 重大错误

LogLevelTypeError,// 错误信息

LogLevelTypeWarning,// 警告信息

LogLevelTypeInfo,// 主要用于生产环境中输出程序运行的一些重要信息

LogLevelTypeDebug// 运行调试信息

备注:在排查一些SDK内部问题时可以调整SDK日志级别完成问题复现与日志抓取,方便后续的问题定位和分析

3. 设备添加功能

无线配网是OpenSDK基础功能之一,和无线配网结合一起使用的还有设备搜索,设备初始化等,无线配网目前OpenSDK支持SmartConfig和软AP配网两种方式,不同设置支持的配网方式不同,具体采用哪种配网方式,需要根据设备型号进行确定。

3.1 SmartConfig配网添加

  • 获取设备信息;扫描标签或者手动输入

  • 调用unBindDeviceInfo接口查询设备配网方式和绑定状态

  • 检测设备是否绑定

  • 判断是否支持smartConfig配网

  • 开始无线配网

  • 开始局域网内搜索设备初始化信息

  • 搜索到设备,停止搜索

  • 调用unBindDeviceInfo查询设备状态

  • 查询到设备在线,调用bindDevice接口进行绑定设备

代码实现如下:

    /** 1.初始化LCOpenSDK_ConfigWIfi对象 */
    LCOpenSDK_ConfigWIfi *m_configWifi = [[LCOpenSDK_ConfigWIfi alloc] init];
    /**
    2.开始配网
    devId:设备序列号
    ssid: wifi名称
    password:wifi密码
    security: 安全码,SC码设备需要,非SC设备传@“”
    */
    NSString * path = [m_configWifi configWifiStart:@"********"
                                          ssid:@"********"
                                      password:@"********"
                                        secure:@"********"
                                     voiceFreq:11000
                                     txMode:0];
    if (path == nill || path.lenght == 0) {
        NSLog(@"smartconfig failed\n");
    }
    /** 开始局域网内搜索设备初始化信息 */
    [[LCOpenSDK_SearchDevices shareSearchDevices] startSearchDevicesWithDeviceId:@"********" timeOut:60000*2 callback:^(LCOpenSDK_SearchDeviceInfo *deviceInfo) {
        /** 搜索到设备,停止搜索 */
        [[LCOpenSDK_SearchDevices shareSearchDevices] stopSearchDevices];
    }];
    /**
    调用unBindDeviceInfo查询设备状态
    查询到设备在线,调用bindDevice接口进行绑定设备
    */

3.2 软AP配网添加

  • 获取设备信息;扫描标签或者手动输入

  • 调用unBindDeviceInfo接口查询设备配网方式和绑定状态

  • 检测设备是否绑定

  • 判断是否支持SoftAP配网

  • 连接设备热点(若通过手动连接,则密码默认为设备底部标签上的安全码)

  • 开始搜索设备,搜索到设备后,进入绑定流程

  • 开始SoftAP配网

  • 配网成功,停止搜索

  • 调用deviceOnline查询设备状态

  • 查询到设备在线,调用bindDevice接口进行绑定设备

代码实现如下:

	/** 1.初始化设备初始化对象 */
    LCOpenSDK_SearchDevices *m_deviceInit = [[LCOpenSDK_SearchDevices alloc] init];

    /** 2.搜索设备初始化信息信息 */
    __block int m_initDevStatus = 0;
    [m_deviceInit startSearchDevices:@"********" timeOut:10*1000 success:^(LCOPENSDK_DEVICE_INIT_INFO info) {
        m_initDevStatus = info.status;
    }];

    /** 3. 初始化软Ap配网对象 */
    LCOpenSDK_SoftAPConfig *m_softAP = [[LCOpenSDK_SoftAPConfig alloc] init];

    /** 4. 初始化状态m_initDevStatus为0或者为SC码设备,直接软Ap配网,设备密码传@“admin”;初始化状态m_initDevStatus为1,设备密码自定义; SC码设备需要穿 设备安全码,isSC设为YES handler 回调 wifiEncry wifi加密方式 netcardName wifi网卡名字*/
    NSInteger softAPResult = [m_softAP
startSoftAPConfig:@"********" wifiPwd:@"********"   wifiEncry:0 netcardName:@"********"  deviceIp:@"********"   devicePwd:@"********"  isSC:True  timeout:0  handler:^(NSInteger result) {
    handler(result);
}];

    if (softAPResult < 0) {
        NSLog(@"SoftAP failed!\n");
    }

4. 实时预览

实时预览的主要步骤有:

  • 通过乐橙云平台设备查询接口获取设备信息。

  • 调用OpenSDK接口进行播放窗口初始化设置以及监听设置。

具体代码实现参考下面:

	/** 1. 初始化播放窗口信息,包括位置大小以及索引 */
    LCOpenSDK_PlayRealWindow *m_play = [[LCOpenSDK_PlayRealWindow alloc] initPlayWindow:CGRectMake(0, 0, 400, 300) Index:0];
    /** 2. 设置播放窗口背景色 */
    [m_play setSurfaceBGColor:[UIColor blackColor]];
    /** 3. 添加播放窗口到父视图 */
    [self.view addSubview:[m_play getWindowView]];
    /** 4. 设置监听对象,可监听播放结果回调 */
    [m_play setPlayRealListener:(id<LCOpenSDK_PlayRealListener>)listener];
  • 调用OpenSDK接口进行播放参数设置,然后开始播放。

具体代码实现参考下面:

	/** 1. 初始化实时预览播放参数对象 */
	LCOpenSDK_ParamReal *paramReal = [[LCOpenSDK_ParamReal alloc] init];
	/** 2. 设置token,token根据AppId和AppSecret调用乐橙云开放平台获取 */
	paramReal.accessToken = @"********";
	/** 3. 设置设备序列号 */
	paramReal.deviceID = @"********";
	/** 4. 设置设备通道,对于单通道设备为0, 对于NVR等多通道设备为具体通道号 */
	paramReal.channel = 0;
	/** 5. 设置码流模式,支持主码流和子码流 */
	paramReal.defiMode = DEFINITION_MODE_HG;
	/** 6. 设置密钥,如果为用户自定义密钥为具体密钥, 非用户自定密钥可为设备序列号*/
	paramReal.psk = @"********";
	/** 7. 设置播放密钥,非必传,传了会提升拉流速度 */
	paramReal.playToken = @"********";
	/** 8. 是否走拉流优化,YES会提升拉流速度,建议传YES即可 */
	paramReal.isOpt = YES;
	/** 8. 开始播放 */
	[m_play playRtspReal:paramReal];
  • 实现监听回调。

具体代码实现参考下面:

	/** 1. 播放结果回调,可根据错误码进行不同处理 */
	- (void)onPlayerResult:(NSString*)code Type:(NSInteger)type Index:(NSInteger)index {

	}

	/** 2. 播放开始回调 */
	- (void)onPlayBegan:(NSInteger)index  {

	}

5. 录像回放

录像回放是对设备存储在SD卡以及硬盘上的录像或云存储上的录像进行播放的的功能,针对设备录像和云存储录像,OpenSDK提供了不同的接口,使用时要注意。

对于设备本地录像播放,OpenSDK提供了两个接口,分别为按文件名播放和按时间播放,使用过程可根据不同场景需要进行使用,推荐使用按文件名播放。

实时预览的主要步骤有:

  • 通过乐橙云平台设备查询接口获取设备信息。

  • 通过乐橙云平台云录像查询接口获取云存储录像信息,本地录像查询获取设备本地录像信息。

  • 调用OpenSDK接口进行播放窗口初始化设置以及监听设置。

具体代码实现参考下面:

	/** 1. 初始化播放窗口信息,包括位置大小以及索引 */
    LCOpenSDK_PlayRealWindow *m_play = [[LCOpenSDK_PlayRealWindow alloc] initPlayWindow:CGRectMake(0, 0, 400, 300) Index:0];
    /** 2. 设置播放窗口背景色 */
    [m_play setSurfaceBGColor:[UIColor blackColor]];
    /** 3. 添加播放窗口到父视图 */
    [self.view addSubview:[m_play getWindowView]];
    /** 4. 设置监听对象,可监听播放结果回调 */
    [m_play setPlayRealListener:(id<LCOpenSDK_PlayRealListener>)listener];
  • 调用OpenSDK接口进行播放参数设置,然后开始播放。

具体代码实现参考下面:

1.设备录像按文件名播放:

/** 1. 初始化按文件名播放参数对象 */
LCOpenSDK_ParamDeviceRecordFileName * paramDeviceRecord = [[LCOpenSDK_ParamDeviceRecordFileName alloc] init];

/** 2. 设置token,token根据AppId和AppSecret调用乐橙云开放平台获取*/
paramDeviceRecord.accessToken = @"********";

/** 3. 设置设备序列号*/
paramDeviceRecord.deviceID = @"********";

/** 4. 设置设备通道,对于单通道设备为0,对于NVR等多通道设备为具体通道号 */
paramDeviceRecord.channel = 0;

/** 5. 设置密钥,如果为用户自定义密钥为具体密钥,非用户自定密钥可为设备序列号*/
paramDeviceRecord.psk = @"********";

/** 6. 设置录像名即录像Id(recordId)*/
paramDeviceRecord.fileName = @"********";

/** 7. 设置播放偏移时间,单位为秒,从文件开始播放设置为0即可*/
paramDeviceRecord.offsetTime = 0 ;

/** 8. 产品ID */
paramDeviceRecord.productId= @"********";

/** 9.  拉流类型选择按文件播放*/
paramDeviceRecord.playMode = @"********";

/** 10.是否播放建议传YES即可*/
paramDeviceRecord.isPlayBack = YES;

/** 11. 是否走拉流优化,YES会提升拉流速度,建议传YES即可*/
paramDeviceRecord.isOpt = YES;

/** 12. 开始播放*/
[m_play playRecordStream:paramDeviceRecord];

2.设备录像按时间播放:

/** 1. 初始化按时间播放参数对象*/
LCOpenSDK_ParamDeviceRecordUTCTime  *paramDeviceRecordUTCTime  = [[LCOpenSDK_ParamDeviceRecordUTCTime alloc] init];

/** 2. 设置token,token根据AppId和AppSecret调用乐橙云开放平台获取*/
paramDeviceRecordUTCTime.accessToken = @"********";

/** 3. 设置设备序列号*/
paramDeviceRecordUTCTime.deviceID = @"********";

/** 4. 设置设备通道,对于单通道设备为0,对于NVR等多通道设备为具体通道号 */
paramDeviceRecordUTCTime.channel = 0;

/** 5. 设置码流模式,支持主码流和子码流*/
paramDeviceRecordUTCTime.defiMode =  DEFINITION_MODE_HG;

/** 6. 设置密钥,如果为用户自定义密钥为具体密钥,非用户自定密钥可为设备序列号*/
paramDeviceRecordUTCTime.psk = @"********";

/** 7.录像的开始时间,不为0 */
paramDeviceRecordUTCTime.beginTime = 0;

/** 8.录像的结束时间,不为0 */
paramDeviceRecordUTCTime.endTime = 0;

/** 9. 是否走拉流优化,YES会提升拉流速度,建议传YES即可*/
paramDeviceRecordUTCTime.isOpt = YES;

/** 10. 是否播放,建议传YES即可*/
paramDeviceRecordUTCTime.isPlayBack = YES;

/** 11. 拉流类型选择按时间播放*/
paramDeviceRecordUTCTime.PlayMode =  @"********";

/** 12. 开始播放*/
[m_play playRecordStream: paramDeviceRecordUTCTime];

3.云存储录像播放:

/** 1. 初始化云存储录像播放参数对象 */
LCOpenSDK_ParamCloudRecord *paramCloudRecord = [[LCOpenSDK_ParamCloudRecord alloc] init];

/** 2. 设置token,token根据AppId和AppSecret调用乐橙云开放平台获取 */
paramCloudRecord.accessToken = @"********";

/** 3. 设置设备序列号 */
paramCloudRecord.deviceID = @"********";

/** 4. 设置设备通道,对于单通道设备为0, 对于NVR等多通道设备为具体通道号 */
paramCloudRecord.channel = 0;

/** 5. 设置密钥,如果为用户自定义密钥为具体密钥, 非用户自定密钥可为设备序列号 */
paramCloudRecord.psk = @"********";

/** 6. 设置录像Id(recordRegionID)*/
paramCloudRecord.recordRegionID = @"********";

/** 7. 设置播放偏移时间,单位为秒,从文件开始播放设置为0即可 */
paramCloudRecord.offsetTime = 0;

/** 8. 设置录像类型, 设置为RECORD_TYPE_ALL即可 */
paramCloudRecord.recordType = RECORD_TYPE_ALL;

/** 9. 设置播放超时时间, 单位为秒*/
paramCloudRecord.timeOut = 60;

/** 10. 是否走拉流优化,YES会提升拉流速度,建议传YES即可 */
paramCloudRecord.isOpt = @"********";

/** 11. TCM效验密码后再次播放 */
paramCloudRecord.isReplay =  @"********";

/** 12. 产品ID */
paramCloudRecord.productID =  @"********";

/** 13. 设置流媒体模式 */
paramCloudRecord.streamType =  @"********";

/** 14. 设置记录区域ID */
paramCloudRecord.recordregionID = @"********";

/** 15. 开始播放 */
[m_play playRecordStream:paramCloudRecord]
  • 实现监听回调。

具体代码实现参考下面:

	/** 1. 播放结果回调,可根据错误码进行不同处理 */
	- (void)onPlayerResult:(NSString*)code Type:(NSInteger)type Index:(NSInteger)index {

	}

	/** 2. 播放开始回调 */
	- (void)onPlayBegan:(NSInteger)index  {

	}

	/** 3. 播放完成回调 */
	- (void)onPlayFinished:(NSInteger)index {

	}

	/** 4. 文件开始时间和结束时间回调 */
	- (void)onFileTime:(long)beginTime EndTime:(long)endTime Index:(NSInteger)index {

	}

	/** 5. 文件播放时间回调 */
	- (void)onPlayerTime:(long)time Index:(NSInteger)index {

	}

6. 语音对讲

语音对讲是设备和客户端进行语音对讲的功能,在设备进行实时预览的同时,进行语音对讲。

语音对讲功能开发主要分为以下几步:

  • 进行实时预览功能开发。

  • 调用OpenSDK接口初始化语音对讲对象,初始化播放参数对象并设置参数开始对讲。

具体代码实现参考下面:

	/** 1. 初始化语音对讲对象 */
	LCOpenSDK_AudioTalk *m_talker = [[LCOpenSDK_AudioTalk alloc] init];
	/** 2. 设置监听对象 */
	[m_talker setListener:(id<LCOpenSDK_TalkerListener>)self];
	/** 3. 初始化语音对讲参数对象 */
	LCOpenSDK_ParamTalk  *paramTalk = [[LCOpenSDK_ParamTalk alloc] init];
	/** 4. 设置token,token根据AppId和AppSecret调用乐橙云开放平台获取 */
	paramTalk.accessToken = @"********";
	/** 5. 设置设备序列号 */
	paramTalk.deviceID = @"********";
	/** 6. 设置设备通道,-1为设备对讲, 和通道对讲为具体通道号 */
	paramTalk.channel = -1;
	/** 7. 设置密钥,如果为用户自定义密钥为具体密钥, 非用户自定密钥可为设备序列号 */
	paramTalk.psk = @"********";
	/** 8. 设置播放密钥,非必传,传了会提升拉流速度 */
	paramTalk.playToken = @"********";
	/** 9. 是否走拉流优化,YES会提升拉流速度,建议传YES即可 */
	paramTalk.isOpt = YES;
	/** 10. 开始对讲 */
	[m_talker playTalk:paramTalk];
  • 实现对讲结果回调。

具体代码实现参考下面:

	/** 对讲结果回调 */
	-(void) onTalkResult:(NSString *) error TYPE:(NSInteger) type {

	}

7. 录像下载

OpenSDK提供了接口供开发者开发设备录像和云存储录像的下载功能,目前接口仅提供MP4格式的录像文件下载,暂不支持其他格式。

语音对讲功能开发主要分为以下几步:

  • 通过乐橙云平台设备查询接口获取设备信息。

  • 通过乐橙云平台云录像查询接口获取云存储录像信息,本地录像查询获取设备本地录像信息。

  • 调用OpenSDK接口进行初始化下载对象,设置监听对象, 进行录像下载。

具体代码实现参考下面:

	/** 1.路径名称 */
	NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
	NSString* libraryDirectory = [paths objectAtIndex:0];
	NSString* myDirectory = [libraryDirectory stringByAppendingPathComponent:@"lechange"];
	NSString* downloadDirectory = [myDirectory stringByAppendingPathComponent:@"download"];
	/** 不要每个都一样,否则会覆盖 */
	NSString* infoPath = [downloadDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"record_download"]];
	NSString* m_downloadPath = [infoPath stringByAppendingString:@".mp4"];
	/** 2.根据路径名称创建路径 */
	NSFileManager* fileManage = [NSFileManager defaultManager];
	NSError* pErr;
	BOOL isDir;
	if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) {
	    [fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
	}
	if (NO == [fileManage fileExistsAtPath:downloadDirectory isDirectory:&isDir]) {
	    [fileManage createDirectoryAtPath:downloadDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
	}
	/** 3.创建下载对象 */
	LCOpenSDK_Download* m_download = [LCOpenSDK_Download shareMyInstance];
	/** 4.设置监听 */
	[m_download setListener:(id<LCOpenSDK_DownloadListener>)self];

	/** 5.开始云录像下载 */
	[m_download startDownload:0 filepath:m_downloadPath token:@"********" devID:@"********" channelID:0 psk:@"********" recordRegionId:@"********" Type:1000 Timeout:10];

	/** 5.开始设备录像下载,speed下载速度设为16倍速即可,fileID级recordId */
	[m_download startDownload:0 filepath:m_downloadPath token:@"********" devID:@"********"  decryptKey:@"********" fileID:@"********" speed:16];
  • 实现下载回调。

具体代码实现参考下面:

	/** 1.下载数据回调 */
	- (void) onDownloadReceiveData:(NSInteger)index datalen:(NSInteger)datalen {

	}

	/** 2.下载状态回调 */
	- (void) onDownloadState:(NSInteger)index code:(NSString *)code type:(NSInteger)type {

	}

8. 数据解密

目前设备告警缩略图和录像封面图默认是加密存储的,需要解密后才能正常打开展示,使用SDK的LCOpenSDK_Utils类实现图片的解密

具体代码如下:

	NSData* dataOut = [[NSData alloc] init];
    NSInteger iret = [[LCOpenSDK_Utils new] decryptPic:picData deviceID:deviceId key:key bufOut:&dataOut];
    NSLog(@"decrypt iret[%ld]", (long)iret);
    if (0 == iret) {
        UIImage* img = [UIImage imageWithData:[NSData dataWithBytes:[dataOut bytes] length:[dataOut length]]];
        [cache storeImage:img forKey:key_temp toDisk:YES completion:^{

        }];
		[self setImage:img];
    }
标准化demo
标准化demo