南京市江宁区菲尼克斯路70号总部基地32栋1001室
电话:025-8418 6339
	
汇云 App SDK 支持手机号码、邮箱、三方平台等多种用户账号类型。
	
账号类型
手机账号支持密码登录。
邮箱账号支持密码登录。
三方平台登录支持常见的平台账号授权登录,比如微信、QQ、苹果、谷歌、Twitter。
	
功能说明
在该模块中,您将频繁地调用对象 IZJViewerUser。它是一个单例,存储了当前用户的所有信息及相关的登录注册方法。其数据模型如下表所示:
	
用户账户信息:UserBean
 
 
	
用户公开信息:UserVCardBean
	 
 
2. 设备管理
设备管理主要提供设备相关的操作,包含设备状态变化监听、设备重命名、设备固件升级、设备移除、设备网络设置等操作。
	
功能说明
设备管理相关类:
类名
说明
IZJViewerDevice
设备信息配置管理
IZJViewerGroup
组内设备的管理
IZJViewerGroupManager
组信息管理
DeviceBean
设备数据模型
初始化设备
根据设备ID去初始化设备控制类,错误的设备 ID 可能会导致初始化失败,此时设备的实例返回 null。
	
接口说明
/**
* 创建设备操作类实例
* @param deviceId 设备ID
* @return
*/
public IZJViewerDevice newDeviceInstance(String deviceId)
	
示例代码
IZJViewerDevice viewerDevice = ZJViewerSdk.getInstance().newDeviceInstance("deviceId");
	
回调监听
实现IDeviceCfgUpdateListener和IDeviceStatusListener回调接口后,您可以在设备状态和设备配置变更的回调中进行处理,刷新 App 设备控制面板的 UI。
	
示例代码
ZJViewerSdk.getInstance().registerDeviceCfgUpdateListener(new IDeviceCfgUpdateListener() {
@Override
public void onDeviceConfigUpdate(String deviceId, DeviceCfgItemEnum deviceCfgItem) {
Log.i(TAG, "deviceId = " + deviceId + "config change = " + deviceCfgItem);
}
});
	
ZJViewerSdk.getInstance().registerDeviceStatusListener(new IDeviceStatusListener() {
@Override
public void onDeviceStatusChange(String groupId, String deviceId, DeviceStatusEnum deviceStatus) {
Log.i(TAG, "deviceId = " + deviceId + "status change = " + deviceStatus);
}
});
	
初始化组
根据组ID去初始化组控制类,错误的组 ID 可能会导致初始化失败,此时组的实例返回 null。组 ID 是通过IZJViewerGroupManager单例获取组列表遍历获取或者直接从DeviceBean模型下的groupId获取。
	
接口说明
/**
* 创建组操作类实例
* @param groupId 组ID
* @return
*/
public IZJViewerGroup newGroupInstance(String groupId)
示例代码
IZJViewerGroup viewerGroup = ZJViewerSdk.getInstance().newGroupInstance("groupId");
	
查询设备信息
查询设备的配置信息
/**
* 获取设备配置信息
* @return
*/
DeviceBean getDeviceInfo();
	
示例代码
IZJViewerDevice viewerDevice = ZJViewerSdk.getInstance().newDeviceInstance("deviceId");
viewerDevice.getDeviceInfo();
修改设备名称
/**
* 修改设备名称
* @param deviceName 设备名称
* @param callback
* @return
*/
ITask setDeviceName(String deviceName, IResultCallback callback);
	
示例代码
IZJViewerDevice viewerDevice = ZJViewerSdk.getInstance().newDeviceInstance("deviceId");
viewerDevice.setDeviceName("new device name", new IResultCallback() {
@Override
public void onSuccess() {
	
}
	
@Override
public void onError(int errorCode) {
	
}
});
移除设备
设备被移除后,会是无主状态,在设备同一局域网下,可以通过局域网搜索添加。
	
接口说明
/**
* 删除设备
* @param deviceId 设备ID
* @param callback
* @return
*/
ITask removeDevice(String deviceId, IResultCallback callback);
	
示例代码
IZJViewerGroup viewerGroup = ZJViewerSdk.getInstance().newGroupInstance("groupId");
viewerGroup.removeDevice("deviceId", new IResultCallback() {
@Override
public void onSuccess() {
	
}
	
@Override
public void onError(int errorCode) {
	
}
});
	
获取设备网络信息
查询设备当前配置的网络信息,回调返回NetworkBean模型
	
接口说明
/**
* 获取设备当前连接网络信息
* @param callback
* @return
*/
ITask getCurNetworkInfo(ICurNetWorkCallback callback);
	
示例代码
IZJViewerDevice viewerDevice = ZJViewerSdk.getInstance().newDeviceInstance("deviceId");
viewerDevice.getCurNetworkInfo(new ICurNetWorkCallback() {
@Override
public void onSuccess(NetworkBean netWorkInfo) {
	
}
	
@Override
public void onError(int errorCode) {
	
}
});
	
3. 设备配网
汇云 App SDK 提供了把摄像机设备配置上路由器或网关的能力。以常见的 Wi-Fi直连配网为例,设备重置开启AP热点模式,APP直连热点后传输配网信息(SSID、密码、组ID等)。智能设备接收到后,开始快速激活,同时连接到 App 和云端,开启设备上云的第一步。
	
配网方式
设备配网支撑的具体能力包括:
AP热点配网
摄像头扫二维码配网
有线设备配网
	
名词解释
名词
说明
Wi-Fi设备
采用Wi-Fi 模组连接路由器,和 App 以及云端进行数据交互的智能设备。AP热点配网
APP先连接设备AP热点,建立一个socket连接,然后APP给设备下发Wi-Fi数据进行配网。摄像头扫二维码配网
摄像头设备通过扫描 App 上的二维码,来获取配网数据信息进行配网。有线配网
通过有线网络连接路由器的设备。功能说明
名词解释

	
功能说明

4. 视频管理
	
功能说明

	
播放器初始化
根据设备ID、放置播放器的视图、镜头校正模式去初始化设备控制类,错误的设备 ID可能会导致初始化失败。
	
接口说明
/**
* 初始化流
* @param deviceId 设备唯一标识
* @param mode 鱼眼类型
* @param streamChannelCreatedCallback
* @param firstVideoFrameShowCallback
* @param playCallback
*/
public void initStream(String deviceId, VRMode mode,
StreamChannelCreatedCallback streamChannelCreatedCallback,
FirstVideoFrameShowCallback firstVideoFrameShowCallback,
PlayCallback playCallback)
	
示例代码
ZJMediaRenderView mediaRenderView = new ZJMediaRenderView(context);
mediaRenderView.initStream("deviceId", VRMode.None,
new ZJMediaRenderView.StreamChannelCreatedCallback() {
@Override
public void onStreamChannelCreated() {
	
}
},
new ZJMediaRenderView.FirstVideoFrameShowCallback() {
@Override
public void onFirstVideoFrameShow() {
	
}
},
new ZJMediaRenderView.PlayCallback() {
@Override
public void onPlayState(VODTypeEnum vodType, int error) {
	
}
});
	
打开实时视频
在初始化播放器完成以后,就可以通过启动流接口打开播放器来观看实时视频。
接口说明
/**
* 开启实时视频流
* @param streamIndex 码流ID(0主码流 1次码流)
* @param talkVolumeCallback
*/
public void startRealTimeStream(int streamIndex, TalkVolumeCallback talkVolumeCallback)
	
示例代码
mediaRenderView.startRealTimeStream(0, new ZJMediaRenderView.TalkVolumeCallback() {
@Override
public void onProgressChange(int progress) {
	
}
});
打开录像视频
录像视频分为本地录像视频和云端录像视频。
	
接口说明
/**
* 开启设备端录像视频流
* @param startTime 起始时间
* @param timeStampChangedCallback
*/
public void startRecordStream(String startTime, TimeStampChangedCallback timeStampChangedCallback)
	
示例代码
mediaRenderView.startRecordStream("2020-01-01 01:01:01",
new ZJMediaRenderView.TimeStampChangedCallback() {
@Override
public void onTimeStampChanged(int timestamp) {
	
}
});
接口说明
/**
* 开启云端录像视频流
* @param startTime 起始时间
* @param timeStampChangedCallback
*/
public void startCloudStream(String startTime, TimeStampChangedCallback timeStampChangedCallback)
	
示例代码
mediaRenderView.startCloudStream("2020-01-01 01:01:01",
new ZJMediaRenderView.TimeStampChangedCallback() {
@Override
public void onTimeStampChanged(int timestamp) {
	
}
});
切换视频流
在观看实时视频的时候进行视频分辨率的切换(0 超清 1 高清)。
	
接口说明
/**
* 切换流
* @param streamIndex 码流ID(0主码流 1次码流)
*/
public void switchStream(int streamIndex)
	
示例代码
//切换为次码流(高清)
mediaRenderView.switchStream(1);
//切换为主码流(超清)
mediaRenderView.switchStream(0);
停止视频播放
对视频流进行关闭操作,停止视频播放。
	
接口说明
/**
* 停止视频播放
*/
public void stopStream()
	
示例代码
mediaRenderView.stopStream();
	
5. 快速集成
本主题介绍如何手动将汇云 Android App SDK快速集成到您的项目中。汇云SDK 要求 Android版本不低于 4.4。
	
集成SDK
第一步:创建 Android 工程
在 Android Studio 中新建工程。
	
第二步:配置 build.gradle 文件
在安卓项目的 build.gradle 文件里,添加集成准备中下载的 dependencies 依赖库。
android {
defaultConfig {
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
}
}
dependencies {
// App SDK 最新稳定安卓版:
implementation (name: 'ZJViewer_V2.0.0', ext: 'aar')
}
初始化SDK
请勿在 Application 中初始化 SDK,可在主界面onCreate中初始化:
接口1:默认正式环境
/**
* 初始化SDK
* @param context 上下文
* @param configPath SDK配置路径,建议/data/data/package/files目录
* @param cachePath SDK缓存路径,用于缓存图片、视频等
* @param companyId 公司ID
* @param appId 应用ID
* @return
*/
public boolean init(Context context, String configPath, String cachePath, String companyId, String appId)
接口2:可切换SDK环境
/**
* 初始化SDK
* @param context 上下文
* @param configPath SDK配置路径,建议/data/data/package/files目录
* @param cachePath SDK缓存路径,用于缓存图片、视频等
* @param companyId 公司ID
* @param appId 应用ID
* @param serverEnv 服务器环境
* @return
*/
public boolean init(Context context, String configPath, String cachePath, String companyId, String appId, ServerEnvEnum serverEnv)
	
示例代码:
ZJViewerSdk.getInstance().init(context, context.getFilesDir().getAbsolutePath(),
context.getFilesDir().getAbsolutePath(),"company_id", "app_id");
	
开启或关闭日志
在 debug 模式下,您可以开启 SDK 的日志开关,查看更多的日志信息,帮助您快速定位问题。
	
在 release 模式下,建议关闭日志开关。
/**
* 设置调试模式
* @param debugMode
*/
public void setDebugMode(boolean debugMode);
	
混淆配置
在 proguard-rules.pro 文件配置相应混淆配置:
-keep class com.chinatelecom.smarthome.viewer.** { *;}
	
6. 集成Push
基于 汇云 SDK 开发的 App,汇云 平台支持主流三方 Push 功能,包括:个推、小米、华为、OPPO、VIVO、阿里云,支持给用户发送运营 Push 和产品的告警 Push。
	
设置推送
APP需要集成各个三方平台推送SDK,获取三方平台生成Push Token或ID,调用汇云 APP SDK的设置推送接口,上报汇云平台。
	
推送相关的类

	
接口说明
/**
* 设置推送token,用于接收推送
* @param pushPlatform 推送平台
* @param pushToken 推送Token
* @param callback
* @return
*/
ITask setPushToken(PushPlatformEnum pushPlatform, String pushToken, IResultCallback callback);
	
示例代码
IZJViewerUser viewerUser = ZJViewerSdk.getInstance().getUserInstance();
viewerUser.setPushToken(PushPlatformEnum.GETUI, "pushToken", new IResultCallback() {
@Override
public void onSuccess() {
	
}
	
@Override
public void onError(int errorCode) {
	
}
});
	
7. 错误代码
| 枚举定义(ErrorEnum) | 错误码 | 描述 | 
| ERR | -1 |  | 
| ERR_PARAM | -2 |  | 
| ERR_NOMEM | -3 |  | 
| ERR_NOINIT | -4 |  | 
| ERR_NORES | -5 |  | 
| ERR_OVERFLOW | -6 |  | 
| ERR_MAGIC_N | -7 |  | 
| ERR_KEY_UNEXIST | -8 |  | 
| ERR_FILE_EXIST | -9 |  | 
| ERR_AUTHORITY | -10 |  | 
| ERR_CLOSE | -11 |  | 
| ERR_SUPPORT | -12 |  | 
| ERR_NOADDR | -13 |  | 
| ERR_FREQUENTLY | -14 |  | 
| ERR_TRYAGAIN | -15 |  | 
| ERR_FULL | -16 |  | 
| ERR_NET | -80 |  | 
| ERR_TIMEOUT | -83 |  | 
| DES_CHANGE | -100 |  | 
| ERR_FILEEND | -101 |  | 
| ERR_FILEWAIT | -102 |  | 
| ERR_EXIST | -110 | 已存在 | 
| SUCCESS | 0 | 请求成功 | 
| CHARACTER | 1001 | 配置WiFi时,传入SSID有无效字符 | 
| NO_WIFI_MODULE | 1002 | 查询WiFi列表,设备没有WiFi模块 | 
| WIFI_IS_CLOSE | 1003 | 查询WiFi列表,WiFi模块关闭 | 
| SIGN_NO_SVR_DISTRI | 1101 | SIGN分配服务时,没有可分配服务 | 
| FREQUENT_OPERATION | 1103 | 访问频繁 | 
| COMPANY_ID_INVALID | 1111 | 鉴权的企业ID不存在 | 
| COMPANY_NO_PRIVILEGE | 1112 | 鉴权的企业ID对应的企业被平台禁用 | 
| APP_ID_INVALID | 1113 | 鉴权传入的AppID在企业下不存在 | 
| APP_ID_NO_PRIVILEGE | 1114 | 鉴权传入的AppID被企业/平台禁用 | 
| LICENSE_NOT_EXIST | 1115 | 传入授权的CTEI码没有找到 | 
| LICENSE_EXPIRE | 1116 | 传入授权的CTEI码已经过期 | 
| LICENSE_DISABLE | 1117 | 授权用的CTEI码被平台禁用 | 
| APP_HAVE_NO_LICENSE_COUNT | 1118 | 按量授权的AppID下无可用的授权数量 | 
| DEVICE_NO_THERE | 1121 | 设备登陆传入的设备ID无效,设备收到该错误码,重新注册新的ID | 
| DEVICE_DISABLE | 1122 | 该设备被平台禁用,设备无法上云 | 
| DEVICE_VERSION_DISABLE | 1123 | 设备版本太旧,系统不再兼容。设备此时需要进行升级 | 
| DEVICE_SVR_CALL_FAILED | 1131 | 设备配置管理系统访问报错 | 
| DEVICE_NO_BUSI_CONFIG | 1141 | 设备尚未上传业务配置 | 
| RESOLUTION_ABILITY_NOT_SUPPORT | 1142 | 设置的设备分辨率,当前设备不支持 | 
| RESOLUTION_BUSI_NOT_SUPPORT | 1143 | 设置的设备分辨率,可能因业务限制不支持(授权限制) | 
| PTZ_IS_MAX | 1144 | 设备执行PTZ已经转到最大值 | 
| EXIT_GROUP_ERR | 1146 | 设备要出的组,不是设备当前的组,出组失败 | 
| SDCARD_FORMATTING_ERR | 1148 | 设备格式化SD失败 | 
| SDCARD_NOT_EXIST | 1149 | 格式化SD卡时,SD卡不存在 | 
| SDCARD_WR_ERR | 1150 | 读写SD卡时,操作失败 | 
| ADD_CHILD_DEVICE_TIMEOUT | 1151 | 添加HUB子设备时,通信超时,失败 | 
| CHILD_DEVICE_EXIST | 1152 | 添加HUB子设备时,设备ID重复 | 
| HUB_OPT_ERR | 1153 | HUB发生异常,操作失败 | 
| QUERY_RECORD_NO_PRIVILEGE | 1154 | 当前查询记录没有操作权限 | 
| CLOUD_SVR_CALL_FAILED | 1155 | 无法访问当前云存记录服务 | 
| LOCAL_RECORD_NOT_EXIST | 1156 | 当前查询详情的本地记录文件已被清理 | 
| CLOUD_FILE_EXPIRE | 1157 | 当前查询的云记录文件已经过期 | 
| BIND_CODE_EXIST | 1158 | 绑定码已存在 | 
| BIND_CODE_NOT_EXIST | 1159 | 绑定码不存在 | 
| BIND_CODE_EXPIRE | 1160 | 绑定码已过期 | 
| BIND_CODE_USED | 1161 | 绑定码已使用 | 
| ACCOUNT_IS_EXIST | 2001 | 账号已存在 | 
| REG_OTHER_ERR | 2003 | 其他注册失败原因 | 
| ACCOUNT_NOT_EXIST | 2004 | 账号不存在 | 
| USER_ACCOUNT_PWD_ERR | 2005 | User登录账号密码错误 | 
| VERIFY_OPENID_ERR | 2006 | 第三方登陆时,第三方校验失败 | 
| ACCOUNT_FORBIDDEN | 2007 | 登陆时,发现账户已经被禁用 | 
| UTOKEN_NOT_EXIST | 2008 | UTOKEN不存在 | 
| SMS_CODE_FREQUENT | 2009 | 两次获取短信验证码时间过短,返回失败 | 
| USER_REJECT_INVITE | 2010 | 给用户发送分享邀请,被邀请者拒绝 | 
| GTOKEN_NOT_MATCH | 2011 | 通过Gtoken入组,Gtoken失效 | 
| DEVICE_IS_IN_GROUP | 2012 | 添加设备进组时失败,设备已经加入了另一个组 | 
| USER_NO_PRIVILEGE | 2013 | 用户无操作权限 | 
| ACCOUNT_TYPE_NOT_SUPPORT | 2014 | 获取短信验证码时,不支持手机邮箱以外的方式获取 | 
| ACCOUNT_FORMAT_ERR | 2015 | 账号格式错误 | 
| ACCOUNT_ALREADY_BIND | 2016 | 账号已被绑定 | 
| ACCOUNT_BIND_ERR | 2017 | 绑定账号错误 | 
| FILEID_NOT_EXIST | 2018 | 云存储文件ID不存在 | 
| ERR_4GCARDNO_NOT_EXIST | 2020 | 4G卡号不存在 | 
| ERR_4GCARDNO_REPORT_ERR | 2021 | 4G卡号汇报失败 | 
| APPID_NOTFOUND_TEMPLATE | 2027 | APPID未找到对应的短信/ems模板 | 
| SMS_SEND_FREQUENCY_LIMIT_ERR | 2033 | 单个手机号码在规定时间内短信发送达到上限 | 
| SHARE_DEVICE_ERR | 2201 | 分享失败 | 
| QRCODE_INVALID | 2202 | 无效的二维码 | 
| REMOVE_DEVICE_ERR | 2203 | 设备出组失败 | 
| VERIFICATION_CODE_NOT_EXIST | 2207 | 验证码不存在 | 
| DEVICE_P2P_NOT_SUPPORT | 3001 | 当用户向设备请求P2P时,设备返回不支持P2P | 
| CONN_NOT_MATCH | 3002 | 用户与设备的P2P连接校验不匹配 | 
| MEDIA_MATCH_TIMEOUT | 3003 | 用户和设备在MEDIA上配对超时 | 
| MEDIA_CHANNEL_NOT_EXIST | 3004 | 媒体操作时,对应的ChannelID不存在 | 
| MEDIA_PLAY_UPPER_LIMIT | 3005 | 点播流媒体时,人数超上限 | 
| MEDIA_INVALID | 3006 | 流媒体服务时,资源过期或无效 | 
| MALLOC_ERR | 4001 | 服务申请内存对象错误 | 
| JSON_DECODE_ERR | 4002 | 服务解析JSON协议错误 | 
| JSON_ENCODE_ERR | 4003 | 服务构造JSON字符串错误 | 
| API_PARAM_ERR | 4004 | API调用参数错误 | 
| METHOD_ERR | 4005 | API返回NIL | 
| ENCRYPT_ERR | 4006 | 协议加密错误 | 
| DECRYPT_ERR | 4007 | 协议解密错误 | 
| BUF_READ_ERR | 4008 | 链接读取BUFFER错误 | 
| TLS_PEM_KEY_ERR | 4009 | TLS链接找不到PEM KEY文件错误 | 
| AUTH_ATOKEN_ERR | 4010 | 服务器之间访问调用 ATOKEN出错 | 
| REDIS_PUB_ERR | 4011 | Redis服务访问错误 | 
| DB_CONNECT_ERR | 4012 | 数据库连接失败 | 
| DB_INSERT_ERR | 4013 | 数据库数据插入失败 | 
| DB_SELECT_ERR | 4014 | 数据库数据查询失败 | 
| DB_UPDATE_ERR | 4015 | 数据库数据更新失败 | 
| DB_DELETE_ERR | 4016 | 数据库数据删除失败 | 
| DB_NO_RECORD_ERR | 4017 | 没有找到相关记录 | 
| DB_DUPLICATE_KEY | 4018 | 主键重复 | 
| NET_LISTEN_ERR | 4019 | 服务端口侦听错误 | 
| CLOSED | 4020 | 服务关闭错误 | 
| IDSVR_NOT_FOUND | 4021 | IDSVR服务找不到 | 
| IDSTUNSVR_NOT_FOUND | 4022 | IDSTUN服务找不到 | 
| BUSISVR_NOT_FOUND | 4023 | BUSICENTRE服务找不到 | 
| MEDIASVR_NOT_FOUND | 4024 | 媒体服务找不到 | 
| LINKSVR_NOT_FOUND | 4025 | LINK服务找不到 | 
| USERSVR_CALL_FAILED | 4026 | 用户系统接口调用失败 | 
| IDSVR_CALL_FAILED | 4027 | IDSVR系统接口调用失败 | 
| IDSTUN_CALL_FAILED | 4028 | IDSTUN系统接口调用失败 | 
| PUSHSVR_NOT_FOUND | 4029 | 推送服务找不到 | 
| GATEWAYSVR_CALL_FAILED | 4030 | 网关服务调用失败 | 
| COMPMNGSVR_CALL_FAILED | 4031 | 企业后台服务调用失败 | 
| PUBSUBSVR_NOT_FOUND | 4032 | 订阅发布服务找不到 | 
| SYSNOTICESVR_NOT_FOUND | 4033 | sysnotice找不到 | 
| GATEWAYSVR_NOT_FOUND | 4034 | 网关服务找不到 | 
| HTTPSVR_NOT_FOUND | 4035 | http服务找不到 | 
| HTTPSVR_CALL_FAILED | 4036 | http服务调用失败 | 
| BUSISVR_CALL_FAILED | 4037 | busicentre调用失败 | 
| ID_CALL_FAILED | 4038 | IDSVR调用失败 | 
| SIGN_CALL_FAILED | 4039 | SIGN服务调用失败 | 
| LINK_CALL_FAILED | 4040 | Link服务调用失败 | 
| LOGSVR_CALL_FAILED | 4041 | LOG系统调用失败 | 
| USERSVR_NOT_FOUND | 4042 | 用户系统找不到 | 
| SYSNOTICESVR_CALL_FAILED | 4043 | sysnotice找不到调用失败 | 
| PUBSUBSVR_CALL_FAILED | 4044 | 订阅发布服务调用失败 | 
| DYNAMICMETHOD_CALL_FAILED | 4045 | notice动态调用其他服务失败 | 
| PLAYLOAD_IS_FULL | 4046 | 负载为空 | 
| GRPCSVR_CALL_FAILED | 4047 | GRPC调用失败 | 
| DEVICESVR_NOT_FOUND | 4048 | 设备系统位找不到 | 
| EVENTSVR_NOT_FOUND | 4049 | 事件系统找不到 | 
| ZONE_NOT_FOUND | 4050 | ZONE服务找不到 | 
| NET_WRITE_BLOCK | 4051 | 网络通道写入包失败 | 
| SOCKET_CLOSED | 4052 | SOCKET连接已关闭 | 
| SOCKET_READERR | 4053 | SOCKET连接读取包失败 | 
| ID_PARSEERR | 4054 | ID参数解析失败(格式不争取) | 
| NET_DNSPARSE_ERR | 4055 |  | 
| NET_REQ_TIMEOUT | 4056 | 网络请求超时 | 
| SUBPUB_TOKEN_NOTEXIST | 4057 |  | 
| SOCKET_ACCEPT_ERROR | 4058 |  | 
| OPERATION_TOO_FREQUENT | 4059 |  | 
| PARSE_IP_ERR | 4060 |  | 
| GETSVRPUBKEY_ERR | 4061 | 获取pubkey | 
| LINKNOTICESVR_NOT_FOUND | 4062 | LINKNOTICE找不到 | 
| ENCRYPTTYPE_ERROR | 4064 | 加密类型错误 | 
| VIDEOSVR_NOT_FOUND | 4065 | 视频存储服务找不到 | 
| EXCEPTIONSVR_NOT_FOUND | 4066 | EXCEPTION服务找不到 | 
| LOGSVR_NOT_FOUND | 4067 | LOGSVR找不到 | 
| OPRECORDSVR_NOT_FOUND | 4068 | OPRECORD服务找不到 | 
| NATSTUNSVR_NOT_FOUND | 4069 | NATSTUN服务找不到 | 
| COMBO_CALL_FAILED | 4070 | 套餐服务调用失败 | 
| COMBO_NOT_FOUND | 4071 | 套餐服务找不到 | 
| GROUPNOTHERE | 4407 | 组不存在 | 
| DEVICENOTINGROUP | 4409 | Device不在组里 | 
| WAKEUP_DEVICEERR | 4422 | 唤醒出错 | 
| DEVICEOFFLINE | 4602 | Device不在线 | 
| DEVICE_ISSLEEP | 4610 | 设备已休眠 | 
| HAVENOGROUPS | 4612 | 没有组列表 | 
| REG_AUTH_ERR | 5001 | SIGN服务注册 SVRID&SVRPWD校验错误 | 
| SIGN_ATOKEN_NOT_EXIST | 5002 | SIGN服务通过SVR ATOKEN找不到服务 | 
| SIGN_MANAGE_NOMETHOD | 5004 |  | 
| GENERALUTOKEN_ERR | 5005 | USI生成UTOKEN错误 | 
| USERNOTHERE | 5007 |  | 
| USERISINGROUP | 5011 | 用户已经入组 | 
| ROLENOTEXIST | 5013 |  | 
| CHILDGROUPNOTEXIST | 5014 |  | 
| ROLEISINUSE | 5015 |  | 
| GROUPISINGROUP | 5016 |  | 
| USERNOTINGROUP | 5017 |  | 
| GROUPNOTINGROUP | 5019 |  | 
| DEVICEISSLEEP | 5021 |  | 
| ID_MAXIDINDEX_GETERR | 5024 |  | 
| APPNOTEXIST | 5026 |  | 
| APPDISABLE | 5027 |  | 
| APPAUTHTYPE_ERR | 5031 |  | 
| APPISEXIST | 5032 |  | 
| ACCOUNTTYPENOTBIND | 5034 |  | 
| APPAUTHTYPENOTSUPPORT | 5036 |  | 
| DEVICE_NOT_AUTH | 5038 |  | 
| UTOKEN_NOT_AUTH | 5039 |  | 
| DEVICE_FORBIDDEN | 5040 |  | 
| UTOKEN_FORBIDDEN | 5041 |  | 
| UTOKEN_CHECKERR | 5042 |  | 
| SYSCOMMAND_FAIL | 5043 |  | 
| PUSHTEMPLATENOTEXIST | 5044 |  | 
| DEVICE_LIMIT_AUTH | 5045 |  | 
| SIGN_SVRKEY_NOTEXIST | 5046 |  | 
| SVRPUBKEY_NOTEXIST | 5047 |  | 
| FILETYPE_NOTEXIST | 5048 |  | 
| SUBPUB_SUBJ_NOT_EXIST | 8000 |  | 
| SUBPUB_ID_TYPE_NOT_SUPPORT | 8001 |  | 
| NOTICE_QUEUE_WRITE_ERR | 8002 | NOTICE服务写入队列失败 | 
| NOTICE_PROTO_NOT_SUPPORT | 8003 | NOTICE通知协议不支持 | 
| LANGUAGE_NOT_EXIST | 8004 | 语言不存在 | 
| SUBPUB_PUBLISH_MSG_ERR | 8005 | 订阅发布服务Publish失败 | 
| NOTICE_JUMP_NOTIE_SUPPORT | 8006 | NOTICE跨机房调用不支持 | 
| SIGNAL_NOT_SUPPORT | 9001 | 所发送的指令,对方不支持该指令集;(版本/型号错误导致) | 
| SERVICE_TIMEOUT | 9002 | 指令发送后,超过超时时间仍没有回应 | 
| SIGNAL_ALREADY_CACHE | 9003 | 通过服务端转发信令,设备支持信令缓存,设备在线,则回应 | 
| SIGNAL_DISCARD | 9004 | 通过服务端转发信令,不支持信令缓存,设备不在线,则回应 | 
| CMD_NOT_SUPPORT | 9010 | 版本较旧,或设备类型不符合不支持当前指令 | 
| DEVICE_REG_FORBIDDEN | 9030 | 设备注册无权限,或服务限制,设备不再重试 | 
| DEVICE_LOGIN_FORBIDDEN | 9031 | 设备登陆被禁用,设备不再重试 | 
| QR_CREATE_FAIL | 10000 | 生成二维码失败 | 
| CANT_SHARE_SELF | 10001 | 无法分享自己 | 
| DEVICE_NOT_REMOVE | 10002 | 注销账号时未删除所有设备 | 
| TIME_OUT | 99999 | 请求超时 | 
	
8. 更新日志
本文提供 Android 版汇云 App SDK 的变更日志和发布说明。SDK 会持续更新,并且汇云对每个版本 SDK 均保留使用权利(© 2017 - 2021 HuiYun Inc. All Rights Reserved)。