1. iOS标准化Demo说明文档
iOS标准化Demo基于OpenSDK组件实现了乐橙云开放平台音视频相关的核心功能。
建议开发者阅读Demo源代码,作为参考或者移植到自己项目中,有助于快速集成。
特别注意:
1、由于Demo是没有后台saas服务的,故Demo是直接在客户端请求开放平台接口来获取数据以及其他的一些操作。
2、建议开发者涉及调用乐橙开放平台OpenApi的地方,采用开发者后台saas服务去调用乐橙开放平台的OpenApi接口,然后再将数据返回给客户端app,整体系统架构搭建采用云云对接。
3、因为调用乐橙云开放平台接口需要使用到开发者账号信息:appId和appSecret,如果开发者将appId和appSecret放在客户端(APP)代码中来实现这个接口,一旦开发者的客户端被其他人反编译,那么就存在appId和appSecret被盗用的风险。
流程如下:
2. 功能描述
iOS LCOpenSDKDemo实现的主要功能包括:
管理员模式登陆
获取设备列表
添加/删除设备
实时预览
语音对讲
设备录像回放
云录像回放和下载
3. 环境搭建
以Demo为例,为开发者介绍项目的工程配置。
Demo工程支持Xcode11版本以上编译调试。
当前LCOpenSDK以framework形式导入工程引用,且需勾选Embed&Sign,framework位于Depend/Frameworks/iOS目录下,头文件位于LCOpenSDKDynamic.framwork/Headers目录下:
3.1 工程依赖系统库
CoreAudio
MediaPlayer
AudioToolbox
VideoToolbox
OpenGLES
MediaAccessibility
CoreVideo
AVFoundation
CoreMedia
libz.tbd(libz.dylib)
3.2 工程依赖三方库
KVOController (键值监控)
Masonry (OC约束布局)
SnapKit (Swift约束布局)
ZXingObjc (扫码库)
AFNetworking (网络请求库)
MJExtension (模型数据转化)
MJRefresh (上下拉控件)
SAMKeychain (钥匙串存储工具)
SDWebImage (图片加载框架)
MBProgressHUD (等待旋转控件)
FMDB (数据库框架)
GTMBase64 (编码库)
请根据当前Xcode版本选择对应版本三方库进行使用,Xcode11、12可直接从Demo中拷贝导入使用。
3.3 Xcode工程配置
路径:Build Setting->Search Paths->Framework Search Paths
添加:$(PROJECT_DIR)/Depend/Frameworks/iOS,支持framework自动检索
路径:Build Setting->Search Paths->Framework Search Paths
添加:
$(PROJECT_DIR)/Depend/Frameworks/iOS/LCOpenSDKDynamic.framework/Headers
$(PROJECT_DIR)/Depend/Frameworks/iOS/LCOpenSDKDynamic.framework/Headers/LCOpenSDK
$(PROJECT_DIR)/Depend/Frameworks/iOS/LCOpenSDKDynamic.framework/Headers/LCOpenNetSDK
$(PROJECT_DIR)/Depend/Frameworks/iOS/LCOpenSDKDynamic.framework/Headers/LCOpenApi
路径:Build Phases ->Embed Frameworks
添加:LCOpenSDKDynamic.framework,Destinations选择Frameworks。
路径:Build Setting ->Search Paths->Library Search Paths
添加:$(PROJECT_DIR)/Depend
3.4 工程相关
将SDK动态库以及头文件添加至XCode(11.0以上版本)工程,以确保被正确引用,c++ standard library选择libc++,工程设置混编(需支持C++调用)具体可参考Demo;
备注: appId、appSecret需要从开放平台网站获取(开发者在创建应用后,在开放平台网站-开发中心-应用详情页中可以找到)。
4. 管理员账号模拟登录
如下图所示,Demo在获取设备列表之前,会先登陆:
在获取管理员设备列表以及进行设备操作前,需要获取accessToken(管理员token),我们把获取accessToken的过程叫做管理员账号模拟登录过程,获取管理员token之后,直接进入设备列表界面。
iOS Demo的源码中已经帮开发者实现了“获取accessToken”接口的代码,具体请见LCAccountInterface.m文件中的accessTokenWithsuccess函数。
5. 获取设备列表
在模拟登陆之后,可调用设备查询接口获取设备列表信息。
建议将设备列表信息,如设备ID、设备名、设备能力集、设备是否在线等,缓存起来,用于后续的实时预览、录像查询等操作。
6. 设备初始化&设备无线配网&设备绑定&设备解绑
设备绑定流程如下:
获取手机当前的Wifi热点信息,按照说明书开启设备配网功能,调用LCOpenSDK_ConfigWifi::configWifiStart对设备进行无线配网,收到配网回调事件之后(无论配网成功还是超时),调用LCOpenSDK_ConfigWifi::configWifiStop停止无线配网,设备只有配网成功并连上乐橙开放平台,才能进行之后的绑定流程;
搜索设备初始化信息,参考LCOpenSDK_DeviceInit::searchDeviceInitInfo;
若设备支持初始化且未被初始化(LCOpenSDK_DeviceInit::DEVICE_INIT_INFO::initStatus=1),调用LCOpenSDK_DeviceInit::initDevice初始化设备;
检查设备是否已绑定,调用乐橙云平台checkDeviceBindOrNot接口;
检查设备是否在线,调用乐橙云平台deviceOnline接口;
绑定设备,调用乐橙云平台bindDevice接口;
设备解绑,调用乐橙云平台unBindDevice接口。
备注: LCOpenSDK_DeviceInit::DEVICE_INIT_INFO::initStatus=2代表设备支持初始化且已被初始化 LCOpenSDK_DeviceInit::DEVICE_INIT_INFO::initStatus=0代表设备不支持初始化
6. 实时预览
实时预览的具体实现请参见Demo源代码,涉及到的接口请参见LCLivePreviewPresenter+control.m中startPlay函数。
7. 语音对讲
语音对讲的具体实现请参见Demo源代码,涉及到的接口请参见LCLivePreviewPresenter+control.m中onAudioTalk函数。
8. 设备录像查询&回放
设备录像查询需调用开放平台queryLocalRecords接口。
设备录像回放请参见Demo源代码LCVideotapePlayerPersenter+Control.m中startPlay函数。
备注:设备录像查询只能以天为单位,即查询的开始时间与结束时间不能跨天,否则容易产生查询超时错误。
9. 云录像查询&回放
设备云录像查询需调用开放平台queryCloudRecords接口。
云录像播放参见Demo源代码LCVideotapePlayerPersenter+Control.m中的startPlay函数。
10. 云台控制&窗口移动
使用开放平台接口controlMovePTZ实现云台上下左右移动,具体参见Demo源代码LCLivePreviewPresenter.m文件。
11. 注意事项
由于Demo已实现大部分监控安防功能,已能满足基础需求,但请勿直接上传AppStore。
app上架会进行代码重复率机审与界面相似度人工审查,如发现重复相似度高会有如下提示:
Guideline 4.3 - Design
Your app duplicates the content and functionality of apps currently available on the App Store.
因此,我们鼓励开发者在开放平台Demo基础上进行代码/界面调整,或者基于openSDK/开放平台API进行完整开发。