一、功能说明
1、新增
1.1、新增 XAPP SDK 配置信息
XAPP SDK 配置中新增了连接 CM 服务器的版本号配置,及设备事件监听事件配置。
XLinkConfig config = XLinkConfig.newBuilder()
//全局开启默认进行内网自动重连配置
.setLocalNetworkAutoConnection(true)
...
.build();
XLinkAndroidSDK.init(config);
参数 | 配置信息 | 说明 |
---|---|---|
mqttClientVersion | 连接 CM 服务器的版本号 | 该配置是为了解决 CM 服务器版本更新后,部分企业环境的版本未同步更新依然使用旧版本服务器版本时,则需要变更连接的版本号配置才可正常使用 |
eventListsener | 设备事件通知回调 | 设备事件监听主要是用于内网固件升级功能的支持,作为设备发送事件通知 APP 的渠道 |
注:版本的差异主要是支持的功能不同的,并不表示某些功能的修复或者是升级,低版本相对于高版本不意味着一定存在风险。
1.2、新增 Restful 接口
在此版本更新中,新增了阿里推送注册接口。阿里推送注册功能是将应用及推送信息注册到服务器,以便设备产生告警信息时可以通过阿里推送离线接收到消息。
注意,离线消息推送要求需要集成阿里的推送功能,才能将应用注册阿里推送配置到服务器。注册成功后离线消息需要通过阿里的功能接收,此部分遵循阿里推送文档说明。
条目 | 内容 |
---|---|
URL | /v2/user/{user_id}/alipush-register |
Method | XLinkRestful.getApplicationApi().postUserRegisterAlipush(…) |
说明 | 注册推送配置到服务器,以启用阿里推送功能 |
条目 | 内容 |
---|---|
URL | /v2/user/{user_id}/alipush-unregister |
Method | XLinkRestful.getApplicationApi().postUserUnregisterAlipush(…) |
说明 | 取消推送配置的注册,以关闭阿里推送功能 |
1.3、新增内网固件升级功能
详情请参考进阶篇-设备固件升级
1.4、新增同步 Home 设备任务
新增同步 Home 下所有设备的任务,通过此任务同步的 Home 设备将会以XDevice
对象返回;原获取 Home 下所有设备接口依然可用。
XLinkSyncHomeDeviceListTask task = XLinkSyncHomeDeviceListTask.newBuilder()
.setHomeId(home.id)
.setListener(new XLinkTaskListener<List<XDevice>>() {
@Override
public void onError(@NotNull XLinkCoreException exception) {
//错误信息
}
@Override
public void onStart() {
}
@Override
public void onComplete(List<XDevice> result) {
//返回的设备对象为 XDevice,不需要再自行对接口返回的数据进行转换
}
})
.build();
XLinkSDK.startTask(task);
注意事项:使用此任务同步的 Home 设备,将会默认添加到设备管理列表中维护。如果只需要获取 Home 下的设备但是不需要 SDK 对设备进行维护和管理,则不建议使用此任务
1.5、新增错误码
自v6.2.6.x版本起,新增 SSL 网络错误码,该错误码可能在登录时发生,由于登录时使用的 SSL 证书错误或无法正确建立 https 的连接引起。
错误码 | 字段定义 | 意义 |
---|---|---|
4001007 | ERROR_SSL_EXCEPTION | SSL验证错误,可能是证书错误或者是未使用正确的SSL验证 |
2、变更
2.1、日志配置变更
对于调试的日志输出配置,本次更新了日志的输出配置方式。旧的日志输出配置方式依然有效,但是设置了新的配置方式,则将使用新的参数进行处理,旧的配置参数将被忽略。
BaseLog.Config config = new BaseLog.Config()
//设置是否输出日志到文件中保存
.setEnableLogFile(true)
//设置日志输出等级
.setDebugLevel(Loggable.DEBUG)
//设置日志输出到文件中的等级
.setBufferLevel(Loggable.DEBUG)
//设置自定义的日志输出对象
.setLoggable(customLogger)
//设置新的日志信息配置
.setLogInfoProvider(new LogInfoProvider() {
@NonNull
@Override
public String provideLogFilesStoragePath() {
//提供日志文件保存文件夹路径,注意只是文件夹,不是文件
return Environment.getExternalStorageDirectory().getPath().concat("/xlink/");
}
@NonNull
@Override
public String provideLogFileName(String time) {
//当一个日志文件生成时,会调用此方法,参数为文件生成的时间信息;
//生成一个日志文件名并返回,建议使用上时间信息,防止文件名重复;
//重名文件不会替换旧文件
return "log_" + time;
}
@NonNull
@Override
public String provideLogZipFileName(String time) {
//若日志文件夹中存在大量日志文件时,将会进行压缩;创建压缩文件时将调用此方法,生成压缩文件的名称
return "archive_" + time;
}
});
默认情况下,如果没有特殊要求或者是特殊处理,建议使用XLinkAndroidSDK
提供的默认日志配置参数,也可以在该默认参数中进行修改。
//使用默认配置参数,或者是基于默认参数进行局部修改
BaseLog.Config config=XLinkAndroidSDK.defaultLogConfig(this)
.setEnableLogFile(false);
//初始化SDK
XLinkConfig.Builder builder = new XLinkConfig.Builder()
.setLogConfig(config)
...
在默认日志配置参数中,相对以前的变更主要在于:
- 生成的日志文件不再全部置于
/sdcard/xlink
的文件夹下,将会根据当前应用包名创建文件夹,并且置于相应的包名文件夹下/sdcard/xlink/包名
- 允许开发者自行定义日志文件名称及压缩文件名称,以便定时对日志进行清理或移除
- 现在可以获取到当前正在运行的 SDK 输出的日志文件路径
//此方法仅在 XLog 已经启用并且存在输出日志的情况下才可用;否则将返回 null 或不正确的路径
if (XLog.isInited() && XLog.getInstance().isStarted()) {
String logFilePath = XLog.getInstance().getCurrentLogFilePath();
}
注意事项:务必调用
XLog.isInited()
确认 XLog 是否 已经初始化成功,否则可能获取到错误的路径;日志文件只有在XLog.startLog()
之后才会创建,所以也需要确认 XLog 是否已经启动成功。
二、更新说明
日期 | 更新内容 |
---|---|
2019.01.16 | 新增版本更新说明 |
类别 | 更新内容 |
---|---|
配置优化 | 1.新增支持配置连接CM服务端的版本号,支持不同环境下使用不同CM版本号 2.新增设备事件监听事件 |
任务更新 | 1.新增同步 Home 设备列表任务 2.新增内网固件升级功能相应任务 |
数据更新 | 1.新增设备对象云端在线可访问字段,更新设备连接状态查询方法 2.优化了设备操作接口 |
错误码 | 1.新增 SSL 异常错误码,由于 SSL 引起异常时将直接获取到该信息 |
资源优化 | 1.优化异常对象的数据存储,降低重复的操作及频繁申请内存问题 2.优化 token 无效时不再处理相应的任务,降低资源的占用 |
功能优化 | 1.更新扫描端口的使用,降低端口被其它网络程序拦截数据导致的无法扫描到设备的问题 2.优化日志输出配置,提供日志文件路径获取方法 |
接口更新 | 1.优化 Restful 接口的初始化时机,现在 XAPP SDK 初始化后即可正常使用 Restful 接口 2.新增阿里推送配置注册接口 |
BUG修复 | 1.修复设备管理资源释放后可能引用异常的问题 2.修复反复订阅已存在的设备时可能会订阅失败的问题 3.修复部分任务有时会返回不正确的错误码 4.修复在低版本 Android 系统中由于 JDK 版本问题引起的崩溃 |