一、迁移指引
1、从V5升级到V6
\1. 先在 iOS SDK (V6) 下载及更新说明 下载最新版本的 V6 XLinkSDK。
\2. 删除原来项目中引入的 XLinkSDK 文件夹下的所有文件。
\3. 将刚下载的 V6 XLinkSDK 解压缩,将得到的 XLinkSDK 文件夹 拖入到你的项目中。
\4. 在XLinkUserDelegate 中的 - (void)onUserLogout:(LogoutReason)reason;
回调方法,增加 LogoutReasonUserAuthInfoInvaild 这种枚举的处理。
详细原因见增加枚举。
5.如果可以的话,参考第5点的接口变更列表,对你们使用的版本进行接口的升级。
6.错误码已经全部进行升级,具体定义需要参考以下链接错误码文档。
二、下载地址
1、文档地址
2、SDK下载地址
三、更新内容
1、新增
1.1、新增 XLinkProbeDataPointTask
XLinkProbeDataPointTask用于APP向设备获取数据端点,和 XLinkGetDataPointTask 的区别主要是如下表:
XLinkGetDataPointTask | XLinkProbeDataPointTask | |
---|---|---|
通过云端返回的数据 | 云端直接返回缓存在云端最新的数据端点 | 云端先向设备获取最新的数据端点,再返回这些数据端点 |
支持获取指定 index 的数据端点 | 不支持,返回的是全量的数据端点 | 支持,只返回传入的 indexArray 中包含的数据端点 |
注:XLinkProbeDataPointTask 中,如果 传入的参数 indexArray 为空,返回的数据端点列表也为空,如需获取全部的数据端点,则需要将所有的数据端点的 index 传入 indexArray 中。
1.2、增加多点登陆的支持。
实现该功能需要 XLinkConfig 中新增的 resource 属性,这个属性意为登录源,用户可以在登录时指定登录源,不同登录源可同时登录,登陆源只支持数字和字母,最大长度为16个字符,默认为nil;
1.3、新增 XLinkErrorCodeHelper 工具类
本次新增XLinkErrorCodeHelper的工具类,用于对SDK内部返回的XLinkErrorCode进行解析。
其中 +getErrorCodeDescWithErrorCode
可以用于解析成一个XLinkErrorDesc对象。该对象会包含该错误码的英文说明和中文说明。
/** 获取当前错误码的描述信息 @param errorCode 错误码 @return 描述信息 */
+ (XLinkErrorDesc *)getErrorCodeDescWithErrorCode:(NSInteger)errorCode;
同时可以直接用以下方法获取当前错误码的名称(英文)
/** 获取当前错误码的名称(英文) @param errorCode 错误码 @return 描述信息 */
+ (NSString *)getErrorCodeNameWithErrorCode:(NSInteger)errorCode
或者可以直接用以下方法获取当前错误码的名称(中文)
/** 获取当前错误码的名称(中文) @param errorCode 错误码 @return 描述信息 */
+ (NSString *)getErrorCodeDescStr:(NSInteger)errorCode
2、删除
本次更新暂无删除的内容。
3、改动
1.1、增加一个用户被下线的onUserLogout回调原因的枚举。
XLinkUserDelegate 中的 - (void)onUserLogout:(LogoutReason)reason;
回调方法,增加 LogoutReasonUserAuthInfoInvaild 这种枚举。
typedef NS_ENUM(NSUInteger, LogoutReason) {
LogoutReasonUserLogout = 0,//用户主动退出
LogoutReasonSingleSignKickOff = 1,//单点登录。当前用户被踢出
LogoutReasonTokenExpired = 2,//用户凭证过期
LogoutReasonUserAuthInfoInvaild = 3,//用户授权信息不正确
};
出现回调 LogoutReasonUserAuthInfoInvaild 这种情况可能出现在APP缓存用户授权信息在本地时出错,导致在第二次启动时,SDK 因为授权信息错误被云端拒绝连接,这个时候 SDK 就会进行回调。
当回调的时候,APP 需要处理关闭 SDK 并提示用户重新登录,因为 SDK 不会再维护云端的连接,给用户的感觉的是,不能通过云端发送任何数据,也接收不到云端发来的任何数据。
1.2、优化设备配对信息的存储
我们此次更新,将设备配对信息保存到云端的专有区域。用户只有在订阅该设备的情况下,才能获取到设备的配对信息。
注:设备配对信息是APP和设备在内网进行通信的凭证。
1.3、优化内网配对策略
当用户已经和设备建立起订阅关系之后,重复对设备进行添加操作,不再重新和设备进行内网配对,以节省设备端的配对额度。
如果用户添加设备,然后解除和设备的绑定,由于用户和设备的配对信息已经删除,因此重新进行添加操作时,会重新进行内网配对。
1.4、优化设备内网发现和连接机制
本次更新我们优化了 APP 和设备的内网发现和连接协议。在使用上对开发者没有影响。但是需要注意的是V6的 APP SDK 可以与 V5、V6 的设备进行内网发现和连接,但是V5的 APP SDK 只可以与 V5 的设备进行内网的发现和连接。
1.5、接口升级
为了为了SDK接口更加清晰明了,避免使用中的困惑,我们重新梳理调整了XLinkSDK中的接口,请旧版本(< 6.1)用户参照此指引进行升级。旧的接口还会保留可以继续使用,但是不会继续维护,但是希望尽快升级到新的接口。
1.5.1 XLinkTask
属性变更
- task开始的回调
@property(copy, nonatomic) OnTaskStartBlock taskStartBlock ;
变更为
@property (copy, nonatomic) XLinkTaskDidStartHandler taskDidStartHandler;
- task完成的回调
@property(copy, nonatomic) OnTaskCompleteBlock taskCompleteBlock ;
变更为
@property (copy, nonatomic) XLinkTaskDidCompletionHandler taskDidCompletionHandler;
- task超时的回调
@property(copy, nonatomic) TimeoutBlock timeoutBlock;
变更为
@property (copy, nonatomic) XLinkTaskDidTimeoutHandler taskDidTimeoutHandler;
1.5.2 XLinkUserAuthorizeTask
方法变更
- 新建用户使用账号密码登陆任务
+ (instancetype)userAuthorizeTaskWithAccount:(NSString *)account
withPassword:(NSString *)password
withCropId:(NSString *)cropId
withTimeout:(NSUInteger)timeout
withCompleteBlock:(XLinkUserAuthorizeTaskCompletionHandler)completeBlock ;
变更为
+ (instancetype)userAuthorizeTaskWithAccount:(NSString *)account
password:(NSString *)password
cropId:(NSString *)cropId
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.3 XLinkThirdPartyAuthorizeTask
方法变更
- 新建第三方用户登陆任务
+ (instancetype)thirdPartyUserAuthorizeTaskWithSource:(XLinkUserSourceType)userSourceType
withOpenId:(NSString *)openid
withAccessToken:(NSString *)accessToken
withNickName:(NSString *)nickName
withCropId:(NSString *)cropId
withTimeout:(NSUInteger)timeout
withCompleteBlock:(XLinkUserAuthorizeTaskCompletionHandler)completeBlock ;
变更为
+ (instancetype)thirdPartyUserAuthorizeTaskWithSource:(XLinkUserSourceType)userSourceType
openId:(NSString *)openid
accessToken:(NSString *)accessToken
nickName:(NSString *)nickName
cropId:(NSString *)cropId
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
- 新建外国的第三方用户(如Twitter,Facebook)登陆任务
+ (instancetype)thirdForeignUserAuthorizeTaskWithContent:(NSDictionary *)content
withCropId:(NSString *)cropId
withTimeout:(NSUInteger)timeout
withCompleteBlock:(XLinkUserAuthorizeTaskCompletionHandler)completeBlock;
变更为
+ (instancetype)thirdForeignUserAuthorizeTaskWithContent:(NSDictionary *)content
cropId:(NSString *)cropId
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.4 XLinkScanDeviceTask
方法变更
- 新建扫描设备任务
+ (instancetype)scanDeviceTaskWithProductIds:(NSArray *)pidArray
withTimeOut:(NSUInteger)timeout
withGotDeviceBlock:(XLinkDidDiscoveredDeviceHandler)gotDeviceBlock
withCompleteBlock:(OnTaskCompleteBlock)completeBlock;
变更为
+ (instancetype)scanDeviceTaskWithProductIdArray:(NSArray *)pidArray
timeout:(NSUInteger)timeout
didDiscoveredDeviceHandler:(XLinkDidDiscoveredDeviceHandler)discoveredDeviceHandler
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.5 XLinkAddDeviceTask
方法变更
- 新建添加设备任务
+ (instancetype)addDeviceTaskWithDevice:(XDevice *)device
withPinCode:(NSData *)pinCode
withTimeOut:(NSUInteger)timeout
withCompleteBlock:(OnTaskCompleteBlock)completeBlock;
变更为
+ (instancetype)addDeviceTaskWithDevice:(XDevice *)device
pinCode:(NSData *)pinCode
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
- 新建二维码添加设备任务
+ (instancetype)addDeviceTaskWithQrcodeString:(NSString *)qrcodeString
withTimeOut:(NSUInteger)timeout
withCompleteBlock:(OnTaskCompleteBlock)completeBlock;
变更为
+ (instancetype)addDeviceTaskWithQrcodeString:(NSString *)qrcodeString
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.6 XLinkRemoveDeviceTask
方法变更
- 新建删除设备任务
+ (instancetype)removeDeviceTaskWithDevice:(XDevice *)device
withTimeOut:(NSUInteger)timeout
withCompleteBlock:(OnTaskCompleteBlock)completeBlock
变更为
+ (instancetype)removeDeviceTaskWithDevice:(XDevice *)device
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.7 XLinkSetDataPointTask
方法变更
- 新建设置数据端点任务
+ (instancetype)setDataPointWithDevice:(XDevice *)device
withDataPoints:(NSArray <XLinkDataPoint *> *)DataPoints
withTimeOut:(NSUInteger)timeout
withCompleteBlock:(OnTaskCompleteBlock)completeBlock;
变更为
+ (instancetype)setDataPointTaskWithDevice:(XDevice *)device
dataPoints:(NSArray <XLinkDataPoint *> *)dataPoints
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.8 XLinkShareDeviceTask
方法变更
- 新建通过账号分享设备任务
+ (instancetype)shareDeviceTaskWithDevice:(XDevice *)device
withAccount:(NSString *)account
withExpired:(NSString *)expired
withShareMode:(XLinkShareDeviceMode)shareDeviceMode
withAuthority:(NSString *)authority
withTimeOut:(NSUInteger)timeout
withShareDeviceTaskCompleteBlock:(XLinkShareDeviceTaskCompletionHandler)shareCompleteBlock ;
变更为
+ (instancetype)shareDeviceTaskWithDevice:(XDevice *)device
account:(NSString *)account
expired:(NSString *)expired
shareMode:(XLinkShareDeviceMode)shareDeviceMode
authority:(NSString *)authority
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
- 新建通过openId分享设备任务
+ (instancetype)shareDeviceTaskWithDevice:(XDevice *)device
withOpenId:(NSString *)openId
withSourceType:(XLinkUserSourceType)sourceType
withExpired:(NSString *)expired
withShareMode:(XLinkShareDeviceMode)shareDeviceMode
withAuthority:(NSString *)authority
withTimeOut:(NSUInteger)timeout
withShareDeviceTaskCompleteBlock:(XLinkShareDeviceTaskCompletionHandler)shareCompleteBlock ;
变更为
+ (instancetype)shareDeviceTaskWithDevice:(XDevice *)device
openId:(NSString *)openId
sourceType:(XLinkUserSourceType)sourceType
expired:(NSString *)expired
shareMode:(XLinkShareDeviceMode)shareDeviceMode
authority:(NSString *)authority
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.9 XLinkGetDataPointTask
方法变更
- 新建获取数据端点任务
+ (instancetype)getDataPointTaskWithDevice:(XDevice *)device
withTimeOut:(NSUInteger)timeout
withGetDataPointTaskCompleteBlock:(XLinkGetDataPointTaskCompletionHandler)completeBlock ;
变更为
+ (instancetype)getDataPointTaskWithDevice:(XDevice *)device
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.10 XLinkProbeDataPointTask
方法变更
- 新建获取数据端点的任务
+ (instancetype)probeDataPointTaskWithDevice:(XDevice *)device
indexArray:(NSArray <NSNumber *> *)indexArray
timeOut:(NSUInteger)timeout
probeDataPointCompleteBlock:(XLinkProbeDataPointTaskCompletionHandler)completeBlock ;
变更为
+ (instancetype)probeDataPointTaskWithDevice:(XDevice *)device
indexArray:(NSArray <NSNumber *> *)indexArray
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.11 XLinkSyncDeviceList
Task
方法变更
- 新建获取数据端点的任务
+ (instancetype)syncDeviceListTaskWithVersion:(int)version
withTimeout:(NSUInteger)timeout
withConnectLocal:(BOOL)connectLocal
withCompleteBlock:(XLinkSyncDeviceListCompletionHandler)syncCompleteBlock ;
变更为
+ (instancetype)syncDeviceListTaskWithVersion:(int)version
timeout:(NSUInteger)timeout
connectLocal:(BOOL)connectLocal
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.12 XLinkConnectDeviceTask
方法变更
- 新建连接设备任务
+ (instancetype)connectDeviceTaskWithDevice:(XDevice *)device
withTimeOut:(NSUInteger)timeout
withCompleteBlock:(OnTaskCompleteBlock)completeBlock;
变更为
+ (instancetype)connectDeviceTaskWithDevice:(XDevice *)device
connectionPolicy:(XDeviceConnectionPolicy)connectionPolicy
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.5.13 XLinkGetDeviceListTask
方法变更
- 新建获取设备列表任务
+ (instancetype)getDeviceListTaskWithUserId:(NSNumber *)userId
withVersion:(int)version
withTimeOut:(NSUInteger)timeout
withCompleteBlock:(XLinkGetDeviceTaskCompletionHandler)completeBlock;
变更为
+ (instancetype)getDeviceListTaskWithVersion:(int)version
timeout:(NSUInteger)timeout
completionHandler:(XLinkTaskDidCompletionHandler)completionHandler;
1.6、错误码重新定义
由于原来的错误码定义不够清晰,出现问题的时候不容易发现具体的原因,因此错误码进行了重新的定义,需要根据新的错误码进行相关代码的改动。
typedef NS_ENUM(NSInteger, XLinkErrorCode) {
//没有错误
XLinkErrorCodeNoError = 0,
//本地配对握手成功
XLinkErrorCodePairingHandshakeLocalSuccess = 100400,
//本地配对握手Dh参数不合法
XLinkErrorCodePairingHandshakeLocalFailDhParamsInvalid = 100401,
//本地Ticket验证失败(为空、不匹配)
XLinkErrorCodePairingHandshakeLocalFailTicketVerify = 100402,
//本地配对握手Public Key不合法
XLinkErrorCodePairingHandshakeLocalFailPublicKeyInvalid = 100403,
//本地Pincode验证失败(为空、不匹配)
XLinkErrorCodePairingHandshakeLocalFailPinVerify = 100404,
//设备不在配对状态
XLinkErrorCodePairingHandshakeLocalFailDeviceNotReady = 100405,
//本地配对成功
XLinkErrorCodePairingLocalSuccess = 100600,
//本地配对达到上限
XLinkErrorCodePairingLocalFailReachPairingLimit = 100601,
//本地会话握手成功
XLinkErrorCodeSessionHandshakeLocalSuccess = 100900,
//本地会话未知Pairing Id
XLinkErrorCodeSessionHandshakeLocalFailUnknownPairingId = 100901,
//本地会话验证失败
XLinkErrorCodeSessionHandshakeLocalFailVerify = 100902,
//本地会话Dh参数不合法
XLinkErrorCodeSessionHandshakeLocalFailDhParamsInvalid = 100903,
//本地Public Key不合法
XLinkErrorCodeSessionHandshakeLocalFailPublicKeyInvalid = 100904,
//本地设置数据端点成功
XLinkErrorCodeSetDataPointLocalSuccess = 101300,
//本地设置数据端点失败
XLinkErrorCodeSetDataPointLocalFail = 101301,
//未授予本地设置端点权限
XLinkErrorCodeSetDataPointLocalFailUnauthorised = 101302,
//设备问题
XLinkErrorCodeSetDataPointLocalFailDeviceFault = 101303,
//数据端点类型错误
XLinkErrorCodeSetDataPointLocalFailTypeError = 101304,
//获取数据端点成功
XLinkErrorCodeGetDataPointLocalSuccess = 101500,
//Flag参数不支持
XLinkErrorCodeGetDataPointLocalFailFlagNotSupported = 101501,
//未授予获取权限
XLinkErrorCodeGetDataPointLocalFailUnauthorised = 101502,
//获取Ticket成功
XLinkErrorCodeGetTicketLocalSuccess = 101700,
//未知Ticket Type
XLinkErrorCodeGetTicketLocalFailUnknownType = 101701,
//获取Probe成功
XLinkErrorCodeProbeLocalSuccess = 110300,
//Flag参数不支持
XLinkErrorCodeProbeLocalFailFlagNotSupported = 110301,
//未授予获取权限
XLinkErrorCodeProbeLocalFailUnauthorised = 110302,
//云端设置数据端点成功
XLinkErrorCodeSetDataPointCloudSuccess = 200800,
//云端设置数据端点失败
XLinkErrorCodeSetDataPointCloudFail = 200801,
//未授予设置权限
XLinkErrorCodeSetDataPointCloudFailUnauthorised = 200802,
//云端获取数据端点成功
XLinkErrorCodeGetDataPointCloudSuccess = 201000,
//云端获取数据端点失败,服务不可用
XLinkErrorCodeGetDataPointCloudFail = 201001,
//云端订阅设备成功
XLinkErrorCodeSubscribeDeviceSuccess = 201601,
//云端订阅设备失败,设备信息有误
XLinkErrorCodeSubscribeDeviceFailDeviceInfoInvaild = 201602,
//云端订阅设备失败,Ticket校验失败
XLinkErrorCodeSubscribeDeviceFailTicketInvaild = 201603,
//云端订阅设备失败, 服务器出错
XLinkErrorCodeSubscribeDeviceFail = 201604,
//云端订阅设备失败,设备订阅模式限制订阅失败
XLinkErrorCodeSubscribeDeviceFailDeviceModeLimited = 201605,
//云端获取Ticket成功
XLinkErrorCodeGetTicketCloudSuccess = 202000,
//任务超时
XLinkErrorCodeTaskTimeout = 300101,
//任务取消
XLinkErrorCodeTaskCanceled = 300102,
//任务依赖等待超时(如云端任务需要云端连接成功才能操作,等待期间云端未能连接成功导致超时)
XLinkErrorCodeTaskDependenceTimeout = 300103,
//未知错误
XLinkErrorCodeUnknown = 400101,
//未知的Api错误,或者解析Api错误码时出错
XLinkErrorCodeApiUnknown = 400102,
//Socket 连接超时
XLinkErrorCodeSocketTimeout = 400103,
//SDK还没启动
XLinkErrorCodeSDKNotStarted = 400104,
//Client操作时参数不合法,比如无法获取到Clientid拼接Topic进行通讯
XLinkErrorCodeMqttFailClientParamsNotExist = 400201,
//Client不存在,无法进行相关通讯操作
XLinkErrorCodeMqttFailClientNotExist = 400202,
//Mqtt Client未连接成功
XLinkErrorCodeMqttFailClientDisconnected = 400203,
//Client内部出错,属于Client的未知错误
XLinkErrorCodeMqttFailClientInnerError = 400204,
//初始化本地Client失败
XLinkErrorCodeMqttFailLocalClientInit = 400205,
//初始化云端Client失败
XLinkErrorCodeMqttFailCloudClientInit = 400206,
//本地发布Topic失败
XLinkErrorCodeMqttFailLocalPublish = 400207,
//云端发布Topic失败
XLinkErrorCodeMqttFailCloudPublish = 400208,
//协议版本不支持
XLinkErrorCodeProtocolVersionNotSupported = 400301,
//会话解密失败
XLinkErrorCodeProtocolFailEncryptSession = 400302,
//会话加密失败
XLinkErrorCodeProtocolFailDecryptSession = 400303,
//配对解密失败
XLinkErrorCodeProtocolFailEncryptPairing = 400304,
//配对加密失败
XLinkErrorCodeProtocolFailDecryptPairing = 400305,
//配对握手加密失败
XLinkErrorCodeProtocolFailDecryptPairingHandshake = 400306,
//配对握手解密失败
XLinkErrorCodeProtocolFailEncryptPairingHandshake = 400307,
//Pincode加密失败
XLinkErrorCodeProtocolFailEncryptPinCode = 400308,
//Pincode解密失败
XLinkErrorCodeProtocolFailDecryptPinCode = 400309,
//配对握手会话信息不存在
XLinkErrorCodeProtocolFailPairingHandshakeNotExit = 400310,
//配对信息不存在
XLinkErrorCodeProtocolFailPairingNotExist = 400311,
//本地会话信息不存在
XLinkErrorCodeProtocolFailSessionNotExist = 400312,
//云端连接失败
XLinkErrorCodeProtocolFailCloudCmConnected = 400313,
//断开云端连接失败
XLinkErrorCodeProtocolFailCloudCmDisconnected = 400314,
//打包数据包出错
XLinkErrorCodeProtocolFailPacketData = 400315,
//解析数据包出错
XLinkErrorCodeProtocolFailParseData = 400316,
//设备本地未连接
XLinkErrorCodeDeviceFailLocalNotConnected = 400401,
//设备云端未连接
XLinkErrorCodeDeviceFailCloudNotConnected = 400402,
//设备本地关闭Session失败
XLinkErrorCodeDeviceFailLocalCloseSession = 400403,
//设备云端关闭Session失败
XLinkErrorCodeDeviceFailCloudCloseSession = 400404,
//维护的设备不存在
XLinkErrorCodeDeviceFailDeviceNotExist = 400405,
//设备ID不能为0
XLinkErrorCodeDeviceIdIsZero = 400406,
//用户断开云端连接
XLinkErrorCodeUserCloudCmDisconnected = 400501,
//用户断开本地Client连接
XLinkErrorCodeUserLocalDisconnected = 400502,
//参数不正确的
//参数不合法(参数存在但是未获取需要的信息,如设备对象对象存在但获取不到Mac)
XLinkErrorCodeParamsInvalid = 400601,
//需要的参数不存在(参数不存在,Null或者Nil)
XLinkErrorCodeParamsNotExist = 400602,
//InviteCode不存在
XLinkErrorCodeParamsInviteCodeNotExist = 400603,
//配置项不正确的
//没有配置企业id
XLinkErrorCodeConfigWithoutCropId = 400701,
//进入产测成功
XLinkErrorCodeFactoryStartLocalSuccess = 500100,
//进入产测失败,设备不在线
XLinkErrorCodeFactoryStartLocalFailDeviceOffline = 500201,
//进入产测失败,未使能产测
XLinkErrorCodeFactoryStartLocalFailDeviceDisabled = 500202,
//结束产测成功
XLinkErrorCodeFacotryFinishLocalSuccess = 500400,
//结束产测失败
XLinkErrorCodeFacotryFinishLocalFail = 500401,
//获取Rssi成功
XLinkErrorCodeFactoryRssiLocalSuccess = 500600,
//获取Rssi失败
XLinkErrorCodeFactoryRssiLocalFail = 500601,
//自定义产测成功
XLinkErrorCodeFactoryCustomLocalSuccess = 500800,
//////////////////////////// Api 接口 //////////////////////////////////
//网络Io错误
XLinkErrorCodeApiParamNetioError = 1001001,
//请求数据字段验证不通过
XLinkErrorCodeApiParamValidError = 4001001,
//请求数据必须字段不可为空
XLinkErrorCodeApiParamMustNotNull = 4001002,
//手机验证码不存在
XLinkErrorCodeApiPhoneVerifycodeNotExists = 4001003,
//手机验证码错误
XLinkErrorCodeApiPhoneVerifycodeError = 4001004,
//注册的手机号已存在
XLinkErrorCodeApiRegisterPhoneExists = 4001005,
//第三方要绑定手机号已存在
XLinkErrorCodeApiRegisterThirdpartyPhoneExists = 4001094,
//第三方要绑定邮箱已存在
XLinkErrorCodeApiRegisterThirdpartyEmailExists = 4001096,
//注册的邮箱已存在
XLinkErrorCodeApiRegisterEmailExists = 4001006,
//密码错误
XLinkErrorCodeApiAccountPasswordError = 4001007,
//密码重试次数过多
XLinkErrorCodeApiAccountPasswordRetryLimit = 4001061,
//帐号不合法
XLinkErrorCodeApiAccountVaildError = 4001008,
//企业成员状态不合法
XLinkErrorCodeApiMemberStatusError = 4001009,
//刷新Token不合法
XLinkErrorCodeApiRefreshTokenError = 4001010,
//未知成员角色类型
XLinkErrorCodeApiMemberRoleTypeUnkown = 4001011,
//只有管理员才能邀请
XLinkErrorCodeApiMemberInviteNotAdmin = 4001012,
//不可修改其他成员信息
XLinkErrorCodeApiCanNotModifyOtherMemberInfo = 4001013,
//不能删除本人
XLinkErrorCodeApiCanNotDeleteYourself = 4001014,
//未知的产品连接类型
XLinkErrorCodeApiProductLinkTypeUnkown = 4001015,
//已发布的产品不可删除
XLinkErrorCodeApiCanNotDeleteReleaseProduct = 4001016,
//固件版本已存在
XLinkErrorCodeApiFirmwareVersionExists = 4001017,
//数据端点未知数据类型
XLinkErrorCodeApiDataPointTypeUnkown = 4001018,
//数据端点索引已存在
XLinkErrorCodeApiDataPointIndexExists = 4001019,
//已发布的数据端点不可删除
XLinkErrorCodeApiCantNotDeleteReleasedDataPoint = 4001020,
//该产品下设备Mac地址已存在
XLinkErrorCodeApiDeviceMacAddressExists = 4001021,
//不能删除已激活的设备
XLinkErrorCodeApiCanNotDeleteActivatedDevice = 4001022,
//扩展属性Key为预留字段
XLinkErrorCodeApiPropertyKeyProtect = 4001023,
//设备扩展属性超过上限
XLinkErrorCodeApiPropertyLimit = 4001024,
//新增已存在的扩展属性
XLinkErrorCodeApiPropertyAddExists = 4001025,
//更新不存在的扩展属性
XLinkErrorCodeApiPropertyUpdateNotExists = 4001026,
//属性字段名不合法
XLinkErrorCodeApiPropertyKeyError = 4001027,
//邮件验证码不存在
XLinkErrorCodeApiEmailVerifycodeNotExists = 4001028,
//邮件验证码错误
XLinkErrorCodeApiEmailVerifycodeError = 4001029,
//用户状态不合法
XLinkErrorCodeApiUserStatusError = 4001030,
//用户手机尚未认证
XLinkErrorCodeApiUserPhoneNotVaild = 4001031,
//用户邮箱尚未认证
XLinkErrorCodeApiUserEmailNotVaild = 4001032,
//用户已经订阅设备
XLinkErrorCodeApiUserHasSubscribeDevice = 4001033,
//用户没有订阅该设备
XLinkErrorCodeApiUserHaveNoSubscribeDevice = 4001034,
//自动升级任务名称已存在
XLinkErrorCodeApiUpgradeTaskNameExists = 4001035,
//升级任务状态未知
XLinkErrorCodeApiUpgradeTaskStatusUnkown = 4001036,
//已有相同的起始版本升级任务
XLinkErrorCodeApiUpgradeTaskHaveStartingVersion = 4001037,
//设备激活失败
XLinkErrorCodeApiDeviceActiveFail = 4001038,
//设备认证失败
XLinkErrorCodeApiDeviceAuthFail = 4001039,
//订阅设备认证码错误
XLinkErrorCodeApiSubscribeAuthorizeCodeError = 4001041,
//授权名称已存在
XLinkErrorCodeApiEmpowerNameExists = 4001042,
//该告警规则名称已存在
XLinkErrorCodeApiAlarmRuleNameExists = 4001043,
//数据变名称已存在
XLinkErrorCodeApiDataTableNameExists = 4001045,
//产品固件文件超过大小限制
XLinkErrorCodeApiProductFirmwareFileSizeLimit = 4001046,
//Apn密钥文件超过大小限制
XLinkErrorCodeApiAppApnLicenseFileSizeLimit = 4001047,
//App的Apn功能未启用
XLinkErrorCodeApiAppApnIsNotEnable = 4001048,
//产品未允许用户注册设备
XLinkErrorCodeApiProductCanNotRegisterDevice = 4001049,
//不是设备的管理员
XLinkErrorCodeApiNotDeviceAdmin = 4001076,
//禁止访问
XLinkErrorCodeApiInvalidAccess = 4031001,
//禁止访问,需要Access-Token
XLinkErrorCodeApiNeedAccessToken = 4031002,
//无效的Access-Token
XLinkErrorCodeApiAccessTokenInvalid = 4031003,
//Access-Token过期
XLinkErrorCodeApiAccessTokenExpired = 4031021,
//Access-Token需要重新刷新
XLinkErrorCodeApiAccessTokenRefresh = 4031022,
//需要企业的调用权限
XLinkErrorCodeApiNeedCorpApi = 4031004,
//需要企业管理员权限
XLinkErrorCodeApiNeedCorpAdminMember = 4031005,
//需要数据操作权限
XLinkErrorCodeApiNeedDataPermission = 4031006,
//禁止访问私有数据
XLinkErrorCodeApiInvalidAccessPrivateData = 4031007,
//分享已经被取消
XLinkErrorCodeApiShareCanceled = 4031008,
//分享已经接受
XLinkErrorCodeApiShareAccepted = 4031009,
//分享无效
XLinkErrorCodeApiShareInvalid = 4031012,
//Url找不到
XLinkErrorCodeApiUrlNotFound = 4041001,
//Share找不到
XLinkErrorCodeApiShareNotPending = 4001216,
//Share找不到2
XLinkErrorCodeApiShareNotPending2 = 4001218,
//企业成员帐号不存在
XLinkErrorCodeApiMemberAccountNoExists = 4041002,
//企业成员不存在
XLinkErrorCodeApiMemberNotExists = 4041003,
//激活的成员邮箱不存在
XLinkErrorCodeApiMemberInviteEmailNotExists = 4041004,
//产品信息不存在
XLinkErrorCodeApiProductNotExists = 4041005,
//产品固件不存在
XLinkErrorCodeApiFirmwareNotExists = 4041006,
//数据端点不存在
XLinkErrorCodeApiDataPointNotExists = 4041007,
//设备不存在
XLinkErrorCodeApiDeviceNotExists = 4041008,
//设备扩展属性不存在
XLinkErrorCodeApiDevicePropertyNotExists = 4041009,
//企业不存在
XLinkErrorCodeApiCorpNotExists = 4041010,
//用户不存在
XLinkErrorCodeApiUserNotExists = 4041011,
//用户扩展属性不存在
XLinkErrorCodeApiUserPropertyNotExists = 4041012,
//升级任务不存在
XLinkErrorCodeApiUpgradeTaskNotExists = 4041013,
//第三方身份授权不存在
XLinkErrorCodeApiEmpowerNotExists = 4041014,
//告警规则不存在
XLinkErrorCodeApiAlarmRuleNotExists = 4041015,
//数据表不存在
XLinkErrorCodeApiDataTableNotExists = 4041016,
//数据不存在
XLinkErrorCodeApiDataNotExists = 4041017,
//分享资源不存在
XLinkErrorCodeApiShareNotExists = 4041018,
//企业邮箱不存在
XLinkErrorCodeApiCorpEmailNotExists = 4041019,
//App不存在
XLinkErrorCodeApiAppNotExists = 4041020,
//第三方授权错误=其它途径)
XLinkErrorCodeApiThirdPartyOpenIdExistOther = 4001125,
//Qq授权错误
XLinkErrorCodeApiThirdPartyOpenIdExistQq = 4001126,
//微信授权错误
XLinkErrorCodeApiThirdPartyOpenIdExistWx = 4001127,
//微博授权错误
XLinkErrorCodeApiThirdPartyOpenIdExistWb = 4001128,
//服务端发生异常
XLinkErrorCodeApiServiceException = 5031001,
};