数据集

对于存储在数据集中的数据,APP可以进行实时消息订阅,进行订阅后,APP和云端建立长连接, 数据集中的数据发生改变后,云端会将最新的数据实时推送给APP, 实时消息要用到如下类, 在项目相关的类的头部添加如下代码:

#import "ACClassDataManager.h"

代码示例

使用之前, 需要先到控制台/存储管理/数据集中设置/查看对应的数据集, 以如下数据集为例(设备逻辑id:12):

订阅数据集实时推送数据

//新建数据集推送主键对象
ACObject *primaryKey = [[ACObject alloc] init];
//设置主键值
[primaryKey putInteger:@"deviceID" value:12];
//订阅数据集对应主键值的数据推送
[ACClassDataManager subscribeClass:@"light_action_data"
                        primaryKey:primaryKey
                          callback:^(NSError *error) {
                              if (error) {
                                  //订阅失败提示
                                  return;
                              }
                              //订阅成功提示
                          }];

相关注意事项如下:

  1. 数据集对象中涉及到字符串比较多, 如果遇到订阅失败请检查拼写是否正确
  2. 如果一个数据集有两个及以上主键, 则必须按顺序订阅, 即如果要订阅主键二, 则实现方式为订阅主键一和主键二, 不能单独订阅主键二
  3. 如果主键是设备id, 那么该设备必须与当前用户是绑定关系

取消订阅数据集实时推送数据

//新建数据集推送主键对象
ACObject *primaryKey = [[ACObject alloc] init];
//设置主键值
[primaryKey putInteger:@"deviceID" value:12];
//订阅数据集对应主键值的数据推送
[ACClassDataManager unSubscribeClass:@"light_action_data"
                          primaryKey:primaryKey
                            callback:^(NSError *error) {
                                if (error) {
                                    //取消订阅失败提示
                                    return;
                                }
                                //取消订阅成功提示
                            }];

相关注意事项:

  1. 我们也提供了一个unSubscribeAllClassData的接口, 如果有需要可以自己选择。

取消订阅所有数据集实时推送数据:

[ACClassDataManager unSubscribeAllClassData];

设置数据集实时推送回调

    [ACClassDataManager setClassMessageHandler:^(NSString *className,
                                                 ACClassDataOperationType opType,
                                                 ACObject *payload) {
        //payload中可以获取详细的推送数据
        //NSInteger deviceId = [payload get:@"deviceID"];
        switch (opType) {
            case ACClassDataOperationTypeCreate:
                //数据集新增 deviceId = 12 的数据行
                break;
            case ACClassDataOperationTypeUpdate:
                //数据集更新 deviceId = 12 的数据行
                break;
            case ACClassDataOperationTypeReplace:
                //数据集替换 deviceId = 12 的数据行
                break;
            case ACClassDataOperationTypeDelete:
                //数据集删除 deviceId = 12 的数据行
                break;
        }
   }];

相关注意事项:

  1. 所有的数据集推送消息都会回调这一个方法。
  2. 可在程序任意位置设置此回调处理方法。