南京市江宁区菲尼克斯路70号总部基地32栋1001室
电话:025-8418 6339
汇云 App SDK 支持手机号码、邮箱、三方平台等多种用户账号类型。
账号类型
手机账号支持密码登录。
邮箱账号支持密码登录。
三方平台登录支持常见的平台账号授权登录,比如微信、QQ、苹果、谷歌、Twitter。
功能说明
在该模块中,您将频繁地调用对象 ZJViewerUser。它是一个单例,存储了当前用户的所有信息及相关的登录注册方法。其数据模型如下表所示:
用户账户信息
2. 设备管理
设备管理主要提供设备相关的操作,包含设备状态变化监听、设备重命名、设备固件升级、设备移除、设备网络设置等操作。
功能说明
设备管理相关类:
初始化设备
根据设备ID去初始化设备控制类,错误的设备 ID 可能会导致初始化失败,此时设备的实例返回 nil。
接口说明
/**
* 初始化对象
*
* @param deviceId 设备id
*/
- (instancetype)initWithDeviceId:(NSString *)deviceId;
示例代码
ZJViewerDevice *viwerDevice = [[ZJViewerDevice alloc] initWithDeviceId:did];
代理注册
ZJViewerSDK* viewer = [ZJViewerSDK defaultViewer];
viewer.deviceDelegate = self;
代理监听
实现 ZJViewerDeviceDelegate代理协议后,您可以在设备状态更变的回调中进行处理,刷新 App 设备控制面板的 UI。
示例代码
- (void)onDeviceCfgChange:(NSString *)deviceId DevCfgItem:(EN_ZJ_VIEWER_DEVCFG_ITEM)devCfgItem; {
// 设备配置信息更新,比如 设备名称修改、网络设置等
}
- (void)onDeviceStatusGroupId:(NSString *)groupId DeviceId:(NSString *)deviceId StateChange:(EN_ZJ_VIEWER_DEVICE_STATUS)state {
// 设备在线状态发生变化回调
}
初始化组
根据组ID去初始化组控制类,错误的组 ID 可能会导致初始化失败,此时组的实例返回 nil。组 ID 是通过ZJViewerGroupManager单例获取组列表遍历获取或者直接从ZJ_DeviceInfo模型下的groupId获取。
接口说明
/**
* 初始化对象
*
* @param groupId 组id
*/
- (instancetype)initWithGroupId:(NSString *)groupId;
示例代码
ZJViewerGroup *viewerGroup = [[ZJViewerGroup alloc] initWithGroupId:groupId];
查询设备信息
查询设备的配置信息,- (ZJ_DeviceInfo *)getDeviceInfo;
示例代码
ZJ_DeviceInfo *deviceInfo = [viwerDevice getDeviceInfo];
修改设备名称
/**
* 设置设备名称
*
* @param name 设备名称
*
* @return ZJTask *
*/
- (ZJTask *)setDeviceName:(NSString*)name
success:(ZJSuccessHandler)success
failure:(ZJFailureError)failure;
参数说明
示例代码
[viwerDevice setDeviceName:name success:^{
NSLog(@"updateName success");
} failure:^(NSError *error) {
NSLog(@"updateName failure: %@", error);
}];
移除设备
设备被移除后,会是无主状态,在设备同一局域网下,可以通过局域网搜索添加。
接口说明
/**
* 删除设备
*
* @param deviceId 设备Id
*
* @return 请求Id
*/
- (ZJTask *)removeDevice:(NSString*)deviceId
success:(ZJSuccessHandler)success
failure:(ZJFailureError)failure;
参数说明
示例代码
[viewerGroup removeDevice:did success:^{
NSLog(@"removeDevice success");
} failure:^(NSError *error) {
NSLog(@"removeDevice failure: %@", error);
}];
获取设备网络信息
查询设备当前配置的网络信息,回调返回ZJ_NetworkInfo模型
接口说明
/**
* 获取设备当前网络信息
*
* @return ZJTask *
*/
- (ZJTask *)getCurNetworkInfo:(ZJCurNetworkInfoSuccess)success
failure:(ZJFailureError)failure;
参数说明
示例代码
[viwerDevice getCurNetworkInfo:^(ZJ_NetworkInfo * _Nonnull networkInfo) {
NSLog(@"getCurNetworkInfo success");
} failure:^(NSError * _Nonnull errorCode) {
NSLog(@"getCurNetworkInfo failure: %@", error);
}];
3. 设备配网
汇云 App SDK 提供了把摄像机设备配置上路由器或网关的能力。以常见的 Wi-Fi直连配网为例,SDK 从云端获取配网 Token,再经由 App 来广播配网信息(路由 ID、密码、配网 Token)。智能设备接收到后,开始快速激活,同时连接到 App 和云端,开启设备上云的第一步。
配网方式
设备配网支撑的具体能力包括:
Wi-Fi设备配网:
Wi-Fi直连配网
AP热点配网
摄像头扫二维码配网
有线设备配网
名词解释
名词 |
说明 |
Wi-Fi设备 |
采用Wi-Fi 模组连接路由器,和 App 以及云端进行数据交互的智能设备。 |
Wi-Fi直连配网 |
APP通过直连AP热点,然后下发ssid和密码给设备进行配网。 |
AP热点配网 |
APP先连接设备AP热点,建立一个socket连接,然后APP给设备下发Wi-Fi数据进行配网。 |
摄像头扫二维码配网 |
摄像头设备通过扫描 App 上的二维码,来获取配网数据信息进行配网。 |
有线配网 |
通过有线网络连接路由器的设备。 |
功能说明
类名 |
说明 |
ZJAPActivator |
提供Wi-Fi直连配网 |
ZJAPDirectActivator |
提供AP热点配网 |
ZJQRActivator |
提供摄像头扫二维码配网 |
iOS 14 版本适配
从 iOS 14 版本开始,在设备配网、局域网本地控制时会触发 本地网络 权限弹窗。
如果用户点击了允许,App 才能够向本地局域网发送数据。
如果用户点击了拒绝,将无法使用相关功能。
目前苹果没有提供任何 API 对此权限进行判断,建议您在相关功能无法正常使用时提示、引导用户检查 系统设置 中的 app设置,确认是否开启了 本地网络 权限。
iOS 13 版本适配
从 iOS 13 版本开始,如果用户没有开启地理位置权限,在已开启 Wi-Fi 权限的前提下,将获取不到有效的 Wi-Fi SSID 或 BSSID。请确认 App 是否添加地理位置权限并开启。
4. 视频管理
视频管理主要是通过ZJ_MediaRenderView类来实现视频的操作管理,包括实时视频、录像回放、视频下载等。
功能说明
播放器初始化
根据设备ID、放置播放器的视图、镜头校正模式去初始化设备控制类,错误的设备 ID可能会导致初始化失败,此时播放器的实例返回 nil。
接口说明
/**
* 初始化一路视频流
*
* @param deviceId 设备ID
* @param targetView 展示view
* @param mode 鱼眼镜头矫正模式
*
* @return ZJ_MediaRenderView *
*/
- (id)initStreamWithDevice:(NSString*)deviceId
TargetView:(UIView *)targetView
VRMode:(ZJ_VRMode)mode;
参数说明
示例代码
ZJ_MediaRenderView *renderView = [[ZJ_MediaRenderView alloc] initStreamWithDevice:deviceId TargetView:renderView VRMode: ZJ_VRModeNone];
打开实时视频
在初始化播放器完成以后,就可以通过启动流接口打开播放器来观看实时视频。
接口说明
/**
* 启动实时视频流
*
* @param streamIndex 流的index
* @param streamChannelCreatedBlock 流通到创建成功回调
* @param firstVideoFrameShowBlock 第一帧视频显示回调
* @param playEndedBlock 播放结束回调
*/
- (void)startRealTimeStreamOnStreamIndex:(int)streamIndex
StreamChannelCreated:(ZJ_RenderCompletionBlock)streamChannelCreatedBlock
FirstVideoFrameShow:(ZJ_RenderCompletionBlock)firstVideoFrameShowBlock
PlayEnded:(ZJ_RenderFinishedBlock)playEndedBlock;
参数说明
示例代码
[renderView startRealTimeStreamOnStreamIndex:streamIndex StreamChannelCreated:^{
// 创建流通到成功
} FirstVideoFrameShow:^{
// 获取第一帧视频成功
} PlayEnded:^(NSError * _Nonnull error) {
// 播放结束/播放失败
}];
打开录像视频
录像视频分为本地录像视频和云端录像视频。
接口说明
/**
* 启动设备端录像视频流
*
* @param startTime 录像的开始时间点 yyyy-MM-dd HH:mm:ss
* @param streamChannelCreatedBlock 流通到创建成功回调
* @param firstVideoFrameShowBlock 第一帧视频显示回调
* @param playEndedBlock 播放结束回调
* @param timeStampChangedBlock 播放录像时时间戳变化回调
*/
-(void)startRecordStreamOnStartTime:(NSString *)startTime
StreamChannelCreated:(ZJ_RenderCompletionBlock)streamChannelCreatedBlock
FirstVideoFrameShow:(ZJ_RenderCompletionBlock)firstVideoFrameShowBlock
PlayEnded:(ZJ_RenderFinishedBlock)playEndedBlock
TimeStampChanged:(ZJ_RenderTimeStampChangedBlock)timeStampChangedBlock;
参数说明
示例代码
[renderView startRecordStreamOnStartTime:(NSString *)startTime
StreamChannelCreated::streamIndex StreamChannelCreated:^{
// 创建流通到成功
} FirstVideoFrameShow:^{
// 获取第一帧视频成功
} PlayEnded:^(NSError * _Nonnull error) {
// 播放结束/播放失败
}];
接口说明
/**
* 启动云端录像视频流
*
* @param startTime 录像的开始时间点 yyyy-MM-dd
* @param streamChannelCreatedBlock 流通到创建成功回调
* @param firstVideoFrameShowBlock 第一帧视频显示回调
* @param playEndedBlock 播放结束回调
* @param timeStampChangedBlock 播放录像时时间戳变化回调
*/
-(void)startCloudStreamOnStartTime:(NSString *)startTime
StreamChannelCreated:(ZJ_RenderCompletionBlock)streamChannelCreatedBlock
FirstVideoFrameShow:(ZJ_RenderCompletionBlock)firstVideoFrameShowBlock
PlayEnded:(ZJ_RenderFinishedBlock)playEndedBlock
TimeStampChanged:(ZJ_RenderTimeStampChangedBlock)timeStampChangedBlock;
参数说明
示例代码
[renderView startCloudStreamOnStartTime:(NSString *)startTime
StreamChannelCreated::streamIndex StreamChannelCreated:^{
// 创建流通到成功
} FirstVideoFrameShow:^{
// 获取第一帧视频成功
} PlayEnded:^(NSError * _Nonnull error) {
// 播放结束/播放失败
}];
切换视频流
在观看实时视频的时候进行视频分辨率的切换(0 超清 1 高清)。
接口说明
/**
* 切换流
*
* @param deviceId 设备ID
* @param streamIndex 流的id(0 超清 1 高清)
* @param streamChannelCreatedBlock 流通到创建成功回调
* @param firstVideoFrameShowBlock 第一帧视频显示回调
* @param playEndedBlock 播放结束回调
*/
- (void)switchStreamWithDevice:(NSString*)deviceId
StreamIndex:(int)streamIndex
OnStreamChannelCreated:(ZJ_RenderCompletionBlock)streamChannelCreatedBlock
FirstVideoFrameShow:(ZJ_RenderCompletionBlock)firstVideoFrameShowBlock
PlayEnded:(ZJ_RenderFinishedBlock)playEndedBlock;
参数说明
示例代码
[renderView switchStreamWithDevice:_deviceId StreamIndex:streamId OnStreamChannelCreated:^{
// 流通道创建成功
} FirstVideoFrameShow:^{
// 获取第一帧视频成功
} PlayEnded:^(NSError * _Nonnull error) {
// 播放结束/播放失败
}];
停止视频播放
对视频流进行关闭操作,停止视频播放。
接口说明
/**
* 停止视频播放
*/
- (void)stopStream;
示例代码
[renderView stopStream];
5. 快速集成
本主题介绍如何手动将汇云 iOS App SDK快速集成到您的项目中。汇云SDK 要求 iOS 版本不低于 9.0。
集成SDK
创建新工程,将ZJ_Viewer.framework拖入项目工程中,并确保在General->frameworks,Libraries,and Embedded Content下添加库,设置APP权限(相机、相册、麦克风、定位)
初始化SDK
打开AppDelegate.m文件,在[AppDelegate application:didFinishLaunchingWithOptions:]方法中初始化SDK并启动SDK:
初始化调用接口
接口1:默认正式环境
/**
* 初始化 SDK 工作环境
*
* @param configPath SDK 工作配置路径
* @param cachePath SDK 缓存路径
* @param companyID 企业ID
* @param appID AppID
*
* @return 0 代表成功,非0代表失败
*/
- (NSInteger)initViewerWithConfigPath:(NSString*)configPath CachePath:(NSString*)cachePath CompanyID:(NSString*)companyID AppID:(NSString*)appID;
接口2:可切换SDK环境
/**
* 初始化 SDK 工作环境
*
* @param configPath SDK 工作配置路径
* @param cachePath SDK 缓存路径
* @param companyID 企业ID
* @param appID AppID
* @param environment 设置SDK 服务器环境类型
*
* @return 0 代表成功,非0代表失败
*/
- (NSInteger)initViewerWithConfigPath:(NSString *)configPath CachePath:(NSString *)cachePath CompanyID:(NSString *)companyID AppID:(NSString *)appID environment:(EN_ZJ_VIEWER_ENVIRONMENT)environment;
注意事项】
configPath:SDK工作配置路径
cachePath:SDK 缓存路径
companyID和appID在智周云管理后台注册申请:http://console.smartcloudcon.com/login/login.htm
environment :服务器环境切换
实例代码:
[[ZJViewerSDK defaultViewer] initViewerWithConfigPath:[HYPCommonUtility getSDKWorkPath] CachePath:[HYPCommonUtility getSDKCachePath] CompanyID:KCompanyID AppID:KAppID environment:envi];
打开Debug模式
在开发的过程中可以开启 Debug 模式,打印一些日志用于分析问题。
#if defined(DEBUG)
[[ZJViewerSDK defaultViewer] setLogEnabled:YES];
#endif
启动SDK
调用接口
/**
* SDK启动
*
* @return 0 代表成功,非0代表失败
*/
- (NSInteger)start;
实例代码:
[[ZJViewerSDK defaultViewer] start];
控制台日志获取
/**
* 打印log
*
* @param logLevel 日志级别
* @param format 日志格式化字符串
*/
- (void)logWithLogLevel:(EN_ZJ_LOG_LEVEL)logLevel LogFormat:(NSString *)format, ...;
6. 集成Push
基于 汇云 SDK 开发的 App,汇云 平台支持 Push 功能,支持给用户发送运营 Push 和产品的告警 Push。
Xcode配置
点击 Xcode 项目 - TARGETS - Signing & Capabilities, 添加 Push Notifications 选项。
设置推送
除了在AppDelegate实现原生推送的相关操作外,还要在didRegisterForRemoteNotificationsWithDeviceToken方法中调用汇云 APP SDK的设置推送接口。
推送相关的类
类名
说明
ZJViewerUser
用户管理的类,通过单例管理
接口说明
/**
* 设置推送,例如客户端接收网络摄像机的报警推送
*
* @param token 推送token
* @param pushPlatForm 推送平台
* @param language 语言
*
* @return ZJTask *
*/
- (ZJTask *)setPushToken:(NSString*)token
PushPlatForm:(ZJ_VIEWER_PUSH_PLATFORM)pushPlatForm
Language:(EN_ZJ_VIEWER_LANGUAGE)language
success:(ZJSuccessHandler)success
failure:(ZJFailureError)failure;
参数说明
参数
说明
token
AppDelegate中的代理回调的token
pushPlatForm
推送平台(2 是iOS的)
language
推送语言类型
success
成功回调
failure
失败回调
示例代码
ZJViewerUser * viwerUser = [ZJViewerUser defaultUser];
[viwerUser setPushToken:token PushPlatForm:ZJ_VIEWER_PUSH_PLATFORM_IOS Language:[HYPCommonUtility getLanuageCode] success:^{
// 设置推送成功
} failure:^(NSError * _Nonnull errorCode) {
// 设置推送失败
}];
7. 错误码
宏定义 |
错误码 |
描述 |
EN_ZJ_VIEWER_ERROR |
-1 |
|
EN_ZJ_VIEWER_ERR_PARAM |
-2 |
|
EN_ZJ_VIEWER_ERR_NOMEM |
-3 |
|
EN_ZJ_VIEWER_ERR_NOINIT |
-4 |
|
EN_ZJ_VIEWER_ERR_NORES |
-5 |
|
EN_ZJ_VIEWER_ERR_OVERFLOW |
-6 |
|
EN_ZJ_VIEWER_ERR_MAGIC_N |
-7 |
|
EN_ZJ_VIEWER_ERR_KEY_UNEXIST |
-8 |
|
EN_ZJ_VIEWER_ERR_FILE_EXIST |
-9 |
|
EN_ZJ_VIEWER_ERR_AUTHORITY |
-10 |
|
EN_ZJ_VIEWER_ERR_CLOSE |
-11 |
|
EN_ZJ_VIEWER_ERR_SUPPORT |
-12 |
|
EN_ZJ_VIEWER_ERR_NOADDR |
-13 |
|
EN_ZJ_VIEWER_ERR_FREQUENTLY |
-14 |
|
EN_ZJ_VIEWER_ERR_TRYAGAIN |
-15 |
|
EN_ZJ_VIEWER_ERR_FULL |
-16 |
|
EN_ZJ_VIEWER_ERR_NET |
-80 |
|
EN_ZJ_VIEWER_ERR_TIMEOUT |
-83 |
|
EN_ZJ_VIEWER_DES_CHANGE |
-100 |
|
EN_ZJ_VIEWER_ERR_FILEEND |
-101 |
|
EN_ZJ_VIEWER_ERR_FILEWAIT |
-102 |
|
EN_ZJ_VIEWER_ERR_EXIST |
-110 |
已存在 |
EN_ZJ_VIEWER_SUCESS |
0 |
请求成功 |
EN_ZJ_VIEWER_ERR_SDK_CHARACTER |
1001 |
配置WiFi时,传入SSID有无效字符 |
EN_ZJ_VIEWER_ERR_SDK_NO_WIFI_MODULE |
1002 |
查询WiFi列表,设备没有WiFi模块 |
EN_ZJ_VIEWER_ERR_SDK_WIFI_ISCLOSE |
1003 |
查询WiFi列表,WiFi模块关闭 |
EN_ZJ_VIEWER_ERR_SVR_SIGN_NO_SVR_DISTRI |
1101 |
SIGN分配服务时,没有可分配服务 |
EN_ZJ_VIEWER_ERR_SVR_FREQUENT_OPERATION |
1103 |
访问频繁 |
EN_ZJ_VIEWER_ERR_SVR_COMPANYID_INVALID |
1111 |
鉴权的企业ID不存在 |
EN_ZJ_VIEWER_ERR_SVR_COMPANY_NO_PRIVILEGE |
1112 |
鉴权的企业ID对应的企业被平台禁用 |
EN_ZJ_VIEWER_ERR_SVR_APPID_INVALID |
1113 |
鉴权传入的AppID在企业下不存在 |
EN_ZJ_VIEWER_ERR_SVR_APPID_NO_PRIVILEGE |
1114 |
鉴权传入的AppID被企业/平台禁用 |
EN_ZJ_VIEWER_ERR_SVR_LICENSENOTEXIST |
1115 |
传入授权的CTEI码没有找到 |
EN_ZJ_VIEWER_ERR_SVR_LICENSEEXPIRE |
1116 |
传入授权的CTEI码已经过期 |
EN_ZJ_VIEWER_ERR_SVR_LICENSEDISABLE |
1117 |
授权用的CTEI码被平台禁用 |
EN_ZJ_VIEWER_ERR_SVR_APPHAVENOLICENSECOUNT |
1118 |
按量授权的AppID下无可用的授权数量 |
EN_ZJ_VIEWER_ERR_SVR_DEVICENOTHERE |
1121 |
设备登陆传入的设备ID无效,设备收到该错误码,重新注册新的ID |
EN_ZJ_VIEWER_ERR_SVR_DEVICEDISABLE |
1122 |
该设备被平台禁用,设备无法上云 |
EN_ZJ_VIEWER_ERR_SVR_DEVICE_VERSION_DISABLE |
1123 |
设备版本太旧,系统不再兼容。设备此时需要进行升级 |
EN_ZJ_VIEWER_ERR_SVR_DEVICESVR_CALL_FAILED |
1131 |
设备配置管理系统访问报错 |
EN_ZJ_VIEWER_ERR_SDK_DEVICE_NO_BUSI_CONFIG |
1141 |
设备尚未上传业务配置 |
EN_ZJ_VIEWER_ERR_SDK_RESOLUTION_ABILITY_NOT_SUPPORT |
1142 |
设置的设备分辨率,当前设备不支持 |
EN_ZJ_VIEWER_ERR_SDK_RESOLUTION_BUSI_NOT_SUPPORT |
1143 |
设置的设备分辨率,可能因业务限制不支持(授权限制) |
EN_ZJ_VIEWER_ERR_SDK_PTZ_ISMAX |
1144 |
设备执行PTZ已经转到最大值 |
EN_ZJ_VIEWER_ERR_SDK_EXITGROUP_ERR |
1146 |
设备要出的组,不是设备当前的组,出组失败 |
EN_ZJ_VIEWER_ERR_SDK_SDCARD_FORMATTING_ERR |
1148 |
设备格式化SD失败 |
EN_ZJ_VIEWER_ERR_SDK_SDCARD_NOT_EXIST |
1149 |
格式化SD卡时,SD卡不存在 |
EN_ZJ_VIEWER_ERR_SDK_SDCARD_WR_ERR |
1150 |
读写SD卡时,操作失败 |
EN_ZJ_VIEWER_ERR_SDK_ADD_CHILD_DEVICE_TIMEOUT |
1151 |
添加HUB子设备时,通信超时,失败 |
EN_ZJ_VIEWER_ERR_SDK_CHILD_DEVICE_EXIST |
1152 |
添加HUB子设备时,设备ID重复 |
EN_ZJ_VIEWER_ERR_SDK_HUB_OPT_ERR |
1153 |
HUB发生异常,操作失败 |
EN_ZJ_VIEWER_ERR_SDK_QUERY_RECORD_NO_PRIVILEGE |
1154 |
当前查询记录没有操作权限 |
EN_ZJ_VIEWER_ERR_SVR_CLOUDSVR_CALL_FAILED |
1155 |
无法访问当前云存记录服务 |
EN_ZJ_VIEWER_ERR_SDK_LOCAL_RECORD_NOT_EXIST |
1156 |
当前查询详情的本地记录文件已被清理 |
EN_ZJ_VIEWER_ERR_SDK_CLOUD_FILE_EXPIRE |
1157 |
当前查询的云记录文件已经过期 |
EN_ZJ_VIEWER_ERR_BINDCODE_EXIST |
1158 |
绑定码已存在 |
EN_ZJ_VIEWER_ERR_BINDCODE_NOT_EXIST |
1159 |
绑定码不存在 |
EN_ZJ_VIEWER_ERR_BINDCODE_EXPIRE |
1160 |
绑定码已过期 |
EN_ZJ_VIEWER_ERR_BINDCODE_USED |
1161 |
绑定码已使用 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_ISEXIST |
2001 |
账号已存在 |
EN_ZJ_VIEWER_ERR_SVR_REG_OTHER_ERR |
2003 |
其他注册失败原因 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_NOTEIXST |
2004 |
账号不存在 |
EN_ZJ_VIEWER_ERR_SVR_USER_ACCOUNT_PWD_ERR |
2005 |
User登录账号密码错误 |
EN_ZJ_VIEWER_ERR_SVR_VERIFY_OPENID_ERR |
2006 |
第三方登陆时,第三方校验失败 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_FORBIDDEN |
2007 |
登陆时,发现账户已经被禁用 |
EN_ZJ_VIEWER_ERR_SVR_UTOKEN_NOTEXIST |
2008 |
UTOKEN不存在 |
EN_ZJ_VIEWER_ERR_SVR_SMSCODE_FREQUENT |
2009 |
两次获取短信验证码时间过短,返回失败 |
EN_ZJ_VIEWER_ERR_SVR_USER_REJECT_INVITE |
2010 |
给用户发送分享邀请,被邀请者拒绝 |
EN_ZJ_VIEWER_ERR_SVR_GTOKENNOTMATCH |
2011 |
通过Gtoken入组,Gtoken失效 |
EN_ZJ_VIEWER_ERR_SVR_DEVICEISINGROUP |
2012 |
添加设备进组时失败,设备已经加入了另一个组 |
EN_ZJ_VIEWER_ERR_SVR_USERNOPRIVILEGE |
2013 |
用户无操作权限 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_TYPE_NOT_SUPPORT |
2014 |
获取短信验证码时,不支持手机邮箱以外的方式获取 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_FORMAT_ERR |
2015 |
账号格式错误 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_ALREADY_BIND |
2016 |
账号已被绑定 |
EN_ZJ_VIEWER_ERR_SVR_ACCOUNT_BIND_ERR |
2017 |
绑定账号错误 |
EN_ZJ_VIEWER_ERR_SVR_FILEID_NOT_EXIST |
2018 |
云存储文件ID不存在 |
EN_ZJ_VIEWER_ERR_SVR_4GCARDNO_NOT_EXIST |
2020 |
4G卡号不存在 |
EN_ZJ_VIEWER_ERR_SVR_4GCARDNO_REPORT_ERR |
2021 |
4G卡号汇报失败 |
EN_ZJ_VIEWER_ERR_SVR_APPID_NOTFOUND_TEMPLATE |
2027 |
APPID未找到对应的短信/ems模板 |
EN_ZJ_VIEWER_ERR_SVR_SMS_SEND_FREQUENCY_LIMIT |
2033 |
单个手机号码在规定时间内短信发送达到上限 |
ERR_ZJ_VIEWER_ERR_ERR_ERR_SVR_TEMPAUTH_SHARE_ERR |
2201 |
分享失败 |
ERR_ZJ_VIEWER_ERR_ERR_SVR_TEMPAUTH_QRCODE_INVALID |
2202 |
无效的二维码 |
ERR_ZJ_VIEWER_ERR_SVR_TEMPAUTH_REMOVE_ERR |
2203 |
设备出组失败 |
EN_ZJ_VIEWER_ERR_SVR_VERIFICATION_CODE_NOTEXIST |
2207 |
验证码不存在 |
EN_ZJ_VIEWER_ERR_SVR_DEVICE_P2P_NOT_SUPPORT |
3001 |
当用户向设备请求P2P时,设备返回不支持P2P |
EN_ZJ_VIEWER_ERR_SVR_CONN_NOT_MATCH |
3002 |
用户与设备的P2P连接校验不匹配 |
EN_ZJ_VIEWER_ERR_SVR_MEDIA_MATCH_TIMEOUT |
3003 |
用户和设备在MEDIA上配对超时 |
EN_ZJ_VIEWER_ERR_SVR_MEDIA_CHANNEL_NOTEXIST |
3004 |
媒体操作时,对应的ChannelID不存在 |
EN_ZJ_VIEWER_ERR_SVR_MEDIA_PLAY_UPPER_LIMIT |
3005 |
点播流媒体时,人数超上限 |
EN_ZJ_VIEWER_ERR_SVR_MEDIA_INVALID |
3006 |
流媒体服务时,资源过期或无效 |
EN_ZJ_VIEWER_ERR_SVR_MALLOC_ERR |
4001 |
服务申请内存对象错误 |
EN_ZJ_VIEWER_ERR_SVR_JSON_DECODE_ERR |
4002 |
服务解析JSON协议错误 |
EN_ZJ_VIEWER_ERR_SVR_JSON_ENCODE_ERR |
4003 |
服务构造JSON字符串错误 |
EN_ZJ_VIEWER_ERR_SVR_API_PARAM_ERR |
4004 |
API调用参数错误 |
EN_ZJ_VIEWER_ERR_SVR_METHOD_ERR |
4005 |
API返回NIL |
EN_ZJ_VIEWER_ERR_SVR_ENCRYPT_ERR |
4006 |
协议加密错误 |
EN_ZJ_VIEWER_ERR_SVR_DECRYPT_ERR |
4007 |
协议解密错误 |
EN_ZJ_VIEWER_ERR_SVR_BUFREAD_ERR |
4008 |
链接读取BUFFER错误 |
EN_ZJ_VIEWER_ERR_SVR_TLS_PEMKEY_ERR |
4009 |
TLS链接找不到PEM KEY文件错误 |
EN_ZJ_VIEWER_ERR_SVR_AUTHATOKEN_ERR |
4010 |
服务器之间访问调用 ATOKEN出错 |
EN_ZJ_VIEWER_ERR_SVR_REDIS_PUB_ERR |
4011 |
Redis服务访问错误 |
EN_ZJ_VIEWER_ERR_SVR_DB_CONNECT_ERR |
4012 |
数据库连接失败 |
EN_ZJ_VIEWER_ERR_SVR_DB_INSERT_ERR |
4013 |
数据库数据插入失败 |
EN_ZJ_VIEWER_ERR_SVR_DB_SELECT_ERR |
4014 |
数据库数据查询失败 |
EN_ZJ_VIEWER_ERR_SVR_DB_UPDATE_ERR |
4015 |
数据库数据更新失败 |
EN_ZJ_VIEWER_ERR_SVR_DB_DELETE_ERR |
4016 |
数据库数据删除失败 |
EN_ZJ_VIEWER_ERR_SVR_DB_NORECORD_ERR |
4017 |
没有找到相关记录 |
EN_ZJ_VIEWER_ERR_SVR_DB_DUPLICATE_KEY |
4018 |
主键重复 |
EN_ZJ_VIEWER_ERR_SVR_NET_LISTEN_ERR |
4019 |
服务端口侦听错误 |
EN_ZJ_VIEWER_ERR_SVR_CLOSED |
4020 |
服务关闭错误 |
EN_ZJ_VIEWER_ERR_SVR_IDSVR_NOT_FOUND |
4021 |
IDSVR服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_IDSTUNSVR_NOT_FOUND |
4022 |
IDSTUN服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_BUSISVR_NOT_FOUND |
4023 |
BUSICENTRE服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_MEDIASVR_NOT_FOUND |
4024 |
媒体服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_LINKSVR_NOT_FOUND |
4025 |
LINK服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_USERSVR_CALL_FAILED |
4026 |
用户系统接口调用失败 |
EN_ZJ_VIEWER_ERR_SVR_IDSVR_CALL_FAILED |
4027 |
IDSVR系统接口调用失败 |
EN_ZJ_VIEWER_ERR_SVR_IDSTUN_CALL_FAILED |
4028 |
IDSTUN系统接口调用失败 |
EN_ZJ_VIEWER_ERR_SVR_PUSHSVR_NOT_FOUND |
4029 |
推送服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_GATEWAYSVR_CALL_FAILED |
4030 |
网关服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_COMPMNGSVR_CALL_FAILED |
4031 |
企业后台服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_PUBSUBSVR_NOT_FOUND |
4032 |
订阅发布服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_SYSNOTICESVR_NOT_FOUND |
4033 |
sysnotice找不到 |
EN_ZJ_VIEWER_ERR_SVR_GATEWAYSVR_NOT_FOUND |
4034 |
网关服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_HTTPSVR_NOT_FOUND |
4035 |
http服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_HTTPSVR_CALL_FAILED |
4036 |
http服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_BUSISVR_CALL_FAILED |
4037 |
busicentre调用失败 |
EN_ZJ_VIEWER_ERR_SVR_ID_CALL_FAILED |
4038 |
IDSVR调用失败 |
EN_ZJ_VIEWER_ERR_SVR_SIGN_CALL_FAILED |
4039 |
SIGN服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_LINK_CALL_FAILED |
4040 |
Link服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_LOGSVR_CALL_FAILED |
4041 |
LOG系统调用失败 |
EN_ZJ_VIEWER_ERR_SVR_USERSVR_NOT_FOUND |
4042 |
用户系统找不到 |
EN_ZJ_VIEWER_ERR_SVR_SYSNOTICESVR_CALL_FAILED |
4043 |
sysnotice找不到调用失败 |
EN_ZJ_VIEWER_ERR_SVR_PUBSUBSVR_CALL_FAILED |
4044 |
订阅发布服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_DYNAMICMETHOD_CALL_FAILED |
4045 |
notice动态调用其他服务失败 |
EN_ZJ_VIEWER_ERR_SVR_PLAYLOAD_IS_FULL |
4046 |
负载为空 |
EN_ZJ_VIEWER_ERR_SVR_GRPCSVR_CALL_FAILED |
4047 |
GRPC调用失败 |
EN_ZJ_VIEWER_ERR_SVR_DEVICESVR_NOT_FOUND |
4048 |
设备系统位找不到 |
EN_ZJ_VIEWER_ERR_SVR_EVENTSVR_NOT_FOUND |
4049 |
事件系统找不到 |
EN_ZJ_VIEWER_ERR_SVR_ZONE_NOT_FOUND |
4050 |
ZONE服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_NET_WRITE_BLOCK |
4051 |
网络通道写入包失败 |
EN_ZJ_VIEWER_ERR_SVR_SOCKET_CLOSED |
4052 |
SOCKET连接已关闭 |
EN_ZJ_VIEWER_ERR_SVR_SOCKET_READERR |
4053 |
SOCKET连接读取包失败 |
EN_ZJ_VIEWER_ERR_SVR_ID_PARSEERR |
4054 |
ID参数解析失败(格式不争取) |
EN_ZJ_VIEWER_ERR_SVR_NET_DNSPARSE_ERR |
4055 |
|
EN_ZJ_VIEWER_ERR_SVR_NET_REQ_TIMEOUT |
4056 |
网络请求超时 |
EN_ZJ_VIEWER_ERR_SVR_SUBPUB_TOKEN_NOTEXIST |
4057 |
|
EN_ZJ_VIEWER_ERR_SVR_SOCKET_ACCEPT_ERROR |
4058 |
|
EN_ZJ_VIEWER_ERR_SVR_OPERATION_TOO_FREQUENT |
4059 |
|
EN_ZJ_VIEWER_ERR_SVR_PARSE_IP_ERR |
4060 |
|
EN_ZJ_VIEWER_ERR_SVR_GETSVRPUBKEY_ERR |
4061 |
获取pubkey |
EN_ZJ_VIEWER_ERR_SVR_LINKNOTICESVR_NOT_FOUND |
4062 |
LINKNOTICE找不到 |
EN_ZJ_VIEWER_ERR_SVR_ENCRYPTTYPE_ERROR |
4064 |
加密类型错误 |
EN_ZJ_VIEWER_ERR_SVR_VIDEOSVR_NOT_FOUND |
4065 |
视频存储服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_EXCEPTIONSVR_NOT_FOUND |
4066 |
EXCEPTION服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_LOGSVR_NOT_FOUND |
4067 |
LOGSVR找不到 |
EN_ZJ_VIEWER_ERR_SVR_OPRECORDSVR_NOT_FOUND |
4068 |
OPRECORD服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_NATSTUNSVR_NOT_FOUND |
4069 |
NATSTUN服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_COMBO_CALL_FAILED |
4070 |
套餐服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_COMBO_NOT_FOUND |
4071 |
套餐服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_BINDSVR_NOT_FOUND |
4073 |
绑定服务找不到 |
EN_ZJ_VIEWER_ERR_SVR_PICTURESVR_NOT_FOUND |
4074 |
图片系统找不到 |
EN_ZJ_VIEWER_ERR_SVR_CLOUDSUBPUB_NOT_FOUND |
4075 |
消息订阅系统找不到 |
EN_ZJ_VIEWER_ERR_SVR_LINKNOTICESVR_CALL_FAILED |
4076 |
LinkNotice服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_NOTICESVR_NOT_FOUND |
4077 |
Notice未找到 |
EN_ZJ_VIEWER_ERR_SVR_NOTICESVR_CALL_FAILED |
4078 |
Notice服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_CLOUDSUBPUB_CALL_FAILED |
4079 |
消息订阅系统服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_MOBCOMMSVR_NOT_FOUND |
4080 |
移动通信(Java向运营商查询套餐信息的服务)服务未找到 |
EN_ZJ_VIEWER_ERR_SVR_MOBCOMMSVR_CALL_FAILED |
4081 |
移动通信(Java向运营商查询套餐信息的服务)服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_ZONESVR_CALL_FAILED |
4082 |
Zone服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_BINDSVR_CALL_FAILED |
4083 |
Bind服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_EVENTSVR_CALL_FAILED |
4084 |
事件服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_PICTURESVR_CALL_FAILED |
4085 |
图片服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_VIDEOSVR_CALL_FAILED |
4086 |
视频服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_OPRECORDSVR_CALL_FAILED |
4087 |
操作记录服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_MEDIASVR_CALL_FAILED |
4088 |
媒体服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_FACEMANAGER_NOT_FOUND |
4089 |
人脸管理系统未找到 |
EN_ZJ_VIEWER_ERR_SVR_FACEMANAGER_CALL_FAILED |
4090 |
人脸系统服务调用失败 |
EN_ZJ_VIEWER_ERR_SVR_GROUPNOTHERE |
4407 |
组不存在 |
EN_ZJ_VIEWER_ERR_SVR_DEVICENOTINGROUP |
4409 |
Device不在组里 |
EN_ZJ_VIEWER_ERR_SVR_WAKEUP_DEVICEERR |
4422 |
唤醒出错 |
EN_ZJ_VIEWER_ERR_SVR_DEVICEOFFLINE |
4602 |
Device不在线 |
EN_ZJ_VIEWER_ERR_SVR_DEVICE_ISSLEEP |
4610 |
设备已休眠 |
EN_ZJ_VIEWER_ERR_SVR_HAVENOGROUPS |
4612 |
没有组列表 |
EN_ZJ_VIEWER_ERR_SVR_REG_AUTH_ERR |
5001 |
SIGN服务注册 SVRID&SVRPWD校验错误 |
EN_ZJ_VIEWER_ERR_SVR_SIGN_ATOKEN_NOT_EXIST |
5002 |
SIGN服务通过SVR ATOKEN找不到服务 |
EN_ZJ_VIEWER_ERR_SVR_SIGN_MANAGE_NOMETHOD |
5004 |
|
EN_ZJ_VIEWER_ERR_SVR_GENERALUTOKEN_ERR |
5005 |
USI生成UTOKEN错误 |
EN_ZJ_VIEWER_ERR_SVR_USERNOTHERE |
5007 |
|
EN_ZJ_VIEWER_ERR_SVR_USERISINGROUP |
5011 |
用户已经入组 |
EN_ZJ_VIEWER_ERR_SVR_ROLENOTEXIST |
5013 |
|
EN_ZJ_VIEWER_ERR_SVR_CHILDGROUPNOTEXIST |
5014 |
|
EN_ZJ_VIEWER_ERR_SVR_ROLEISINUSE |
5015 |
|
EN_ZJ_VIEWER_ERR_SVR_GROUPISINGROUP |
5016 |
|
EN_ZJ_VIEWER_ERR_SVR_USERNOTINGROUP |
5017 |
|
EN_ZJ_VIEWER_ERR_SVR_GROUPNOTINGROUP |
5019 |
|
EN_ZJ_VIEWER_ERR_SVR_DEVICEISSLEEP |
5021 |
|
EN_ZJ_VIEWER_ERR_SVR_ID_MAXIDINDEX_GETERR |
5024 |
|
EN_ZJ_VIEWER_ERR_SVR_APPNOTEXIST |
5026 |
|
EN_ZJ_VIEWER_ERR_SVR_APPDISABLE |
5027 |
|
EN_ZJ_VIEWER_ERR_SVR_APPAUTHTYPE_ERR |
5031 |
|
EN_ZJ_VIEWER_ERR_SVR_APPISEXIST |
5032 |
|
EN_ZJ_VIEWER_ERR_SVR_ACCOUNTTYPENOTBIND |
5034 |
|
EN_ZJ_VIEWER_ERR_SVR_APPAUTHTYPENOTSUPPORT |
5036 |
|
EN_ZJ_VIEWER_ERR_SVR_DEVICE_NOT_AUTH |
5038 |
|
EN_ZJ_VIEWER_ERR_SVR_UTOKEN_NOT_AUTH |
5039 |
|
EN_ZJ_VIEWER_ERR_SVR_DEVICE_FORBIDDEN |
5040 |
|
EN_ZJ_VIEWER_ERR_SVR_UTOKEN_FORBIDDEN |
5041 |
|
EN_ZJ_VIEWER_ERR_SVR_UTOKEN_CHECKERR |
5042 |
|
EN_ZJ_VIEWER_ERR_SVR_SYSCOMMAND_FAIL |
5043 |
|
EN_ZJ_VIEWER_ERR_SVR_PUSHTEMPLATENOTEXIST |
5044 |
|
EN_ZJ_VIEWER_ERR_SVR_DEVICE_LIMIT_AUTH |
5045 |
|
EN_ZJ_VIEWER_ERR_SVR_SIGN_SVRKEY_NOTEXIST |
5046 |
|
EN_ZJ_VIEWER_ERR_SVR_SVRPUBKEY_NOTEXIST |
5047 |
|
EN_ZJ_VIEWER_ERR_SVR_FILETYPE_NOTEXIST |
5048 |
|
EN_ZJ_VIEWER_ERR_SVR_SUBPUB_SUBJ_NOT_EXIST |
8000 |
|
EN_ZJ_VIEWER_ERR_SVR_SUBPUB_ID_TYPE_NOT_SUPPORT |
8001 |
|
EN_ZJ_VIEWER_ERR_SVR_NOTICE_QUEUE_WRITE_ERR |
8002 |
NOTICE服务写入队列失败 |
EN_ZJ_VIEWER_ERR_SVR_NOTICE_PROTO_NOT_SUPPORT |
8003 |
NOTICE通知协议不支持 |
EN_ZJ_VIEWER_ERR_SVR_LANGUAGE_NOT_EXIST |
8004 |
语言不存在 |
EN_ZJ_VIEWER_ERR_SVR_SUBPUB_PUBLISH_MSG_ERR |
8005 |
订阅发布服务Publish失败 |
EN_ZJ_VIEWER_ERR_SVR_NOTICE_JUMP_NOTIE_SUPPORT |
8006 |
NOTICE跨机房调用不支持 |
EN_ZJ_VIEWER_ERR_SVR_SIGNAL_NOT_SUPPORT |
9001 |
所发送的指令,对方不支持该指令集;(版本/型号错误导致) |
EN_ZJ_VIEWER_ERR_SVR_SERVICE_TIMEOUT |
9002 |
指令发送后,超过超时时间仍没有回应 |
EN_ZJ_VIEWER_SVR_SIGNAL_ALREADY_CACHE |
9003 |
通过服务端转发信令,设备支持信令缓存,设备在线,则回应 |
EN_ZJ_VIEWER_ERR_SVR_SIGNAL_DISCARD |
9004 |
通过服务端转发信令,不支持信令缓存,设备不在线,则回应 |
EN_ZJ_VIEWER_ERR_SVR_CMD_NOT_SUPPORT |
9010 |
版本较旧,或设备类型不符合不支持当前指令 |
EN_ZJ_VIEWER_ERR_SVR_DEVICE_REG_FORBIDDEN |
9030 |
设备注册无权限,或服务限制,设备不再重试 |
EN_ZJ_VIEWER_ERR_SVR_DEVICE_LOGIN_FORBIDDEN |
9031 |
设备登陆被禁用,设备不再重试 |
8. 更新日志
本文提供 iOS 版汇云 App SDK 的变更日志和发布说明。SDK 会持续更新,并且汇云对每个版本 SDK 均保留使用权利(© 2017 - 2021 HuiYun Inc. All Rights Reserved)