数据集

对于存储在数据集中的数据,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) {
            //订阅失败提示
        }
    }
);

相关注意事项如下:

  1. 数据集对象中涉及到字符串比较多, 如果遇到订阅失败请检查拼写是否正确
  2. 如果一个数据集有两个及以上主键, 则必须按顺序订阅, 即如果要订阅主键二, 则实现方式为订阅主键一和主键二, 不能单独订阅主键二
  3. 如果主键是设备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) {
            //失败提示
        }
    }
);

相关注意事项:

  1. 我们也提供了一个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);
}

相关注意事项如下:

  1. className为数据集名称
  2. opType为操作类型
  3. value为JSON格式数据
  4. 此回调方法可以在您代码的任意位置进行设置。