数据集
对于存储在数据集中的数据,APP可以进行实时消息订阅,进行订阅后,APP和云端建立长连接, 数据集中的数据发生改变后,云端会将最新的数据实时推送给APP
代码示例
使用之前, 需要先到控制台/存储管理/数据集中设置/查看对应的数据集, 以如下数据集为例(设备逻辑id:12):
订阅数据集实时推送数据
//设置主键值
Map<String, Object> primaryKey = new HashMap<>();
primaryKey.put("deviceId", 12);
//订阅数据集对应主键值的数据推送
AC.classDataMgr().subscribe("light_action_data", primaryKey, ACClassDataMgr.OPTYPE_ALL,
new VoidCallback() {
@Override
public void success() {
//订阅成功提示
}
@Override
public void error(ACException e) {
//订阅失败提示
}
}
);
相关注意事项如下:
- 数据集对象中涉及到字符串比较多, 如果遇到订阅失败请检查拼写是否正确
- 如果一个数据集有两个及以上主键, 则必须按顺序订阅, 即如果要订阅主键二, 则实现方式为订阅主键一和主键二, 不能单独订阅主键二
- 如果主键是设备Id, 那么该设备必须与当前用户是绑定关系
取消订阅数据集实时推送数据
//设置主键值
Map<String, Object> primaryKey = new HashMap<>();
primaryKey.put("deviceId", 12);
//取消数据集对应主键值的数据推送
AC.classDataMgr().unSubscribe("light_action_data", primaryKey, ACClassDataMgr.OPTYPE_ALL,
new VoidCallback() {
@Override
public void success() {
//取消订阅提示
}
@Override
public void error(ACException e) {
//失败提示
}
}
);
相关注意事项:
- 我们也提供了一个unSubscribeAll的接口, 如果有需要可以自己选择。
取消订阅所有数据集实时推送数据:
AC.classDataMgr().unSubscribeAll()
设置数据集实时推送回调
// 注册回调
AC.classDataMgr().registerDataReceiver(/*ACClassDataMgr.ClassDataReceiver*/ receiver);
// 解注册回调
AC.classDataMgr().unregisterDataReceiver(/*ACClassDataMgr.ClassDataReceiver*/ receiver);
ClassDataReceiver是回调接口
interface ClassDataReceiver {
void onReceive(String className, int opType, String value);
}
相关注意事项如下:
- className为数据集名称
- opType为操作类型
- value为JSON格式数据
- 此回调方法可以在您代码的任意位置进行设置。