1. iOS标准化Demo说明文档

iOS标准化Demo基于OpenSDK组件实现了乐橙云开放平台音视频相关的核心功能。

建议开发者阅读Demo源代码,作为参考或者移植到自己项目中,有助于快速集成。

iOS标准化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.mstartPlay函数。

7. 语音对讲

语音对讲的具体实现请参见Demo源代码,涉及到的接口请参见LCLivePreviewPresenter+control.monAudioTalk函数。

8. 设备录像查询&回放

设备录像查询需调用开放平台queryLocalRecords接口。

设备录像回放请参见Demo源代码LCVideotapePlayerPersenter+Control.mstartPlay函数。

备注:设备录像查询只能以天为单位,即查询的开始时间与结束时间不能跨天,否则容易产生查询超时错误。

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进行完整开发。

results matching ""

    No results matching ""