定时任务

注意

1、timePoint的格式为"yyyy-MM-dd HH:mm:ss",否则会失败。

2、timeCycle需要在timePoint时间点的基础上,选择循环方式。

  • "once":单次循环

  • "hour":在每小时的mm:ss时间点循环执行

  • "day":在每天的HH:mm:ss时间点循环执行

  • "month":在每月的dd HH:mm:ss时间点循环执行

  • "year":在每年的MM-dd HH:mm:ss时间点循环执行

  • "week[0,1,2,3,4,5,6]":在每星期的HH:mm:ss时间点循环执行(如周一,周五重复,则表示为"week[1,5]")

设备定时任务

||SKIP||

定时管理器 -- ACDeviceTimerManager

ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];

添加定时任务

- (void)addDeviceTask {

    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];

    /**
     添加定时任务
     定时任务从创建时刻开始默认开启状态, `timePoint`中只取比你的`timeCycle`下一级别的数据
     timePoint的格式为统一标准格式, 但是实际使用的时候是向后解析, 即:
     如果是week循环任务, 只需要关注`-18 16:39:03`;  `2016-07`    不起作用, 只为统一格式
     如果是day 循环任务, 只需要关注    `16:39:03`;  `2016-07-18` 不起作用, 只为统一格式
     其余的循环周期做同样处理
     */
    ACTimeRule *timeRule = [[ACTimeRule alloc] initWithTimeZone:[NSTimeZone systemTimeZone]
                                                      timeCycle:@"week[1, 2, 3]"
                                                      timePoint:@"2016-07-18 16:39:03"];
    //设置设备操作指令
    //该指令为平台常用的`开灯`指令
    Byte content[] = {0, 0, 0, 1};
    NSData *binaryData = [NSData dataWithBytes:content length:sizeof(content)];

    //入参请参考控制台中开发者建立的`数据包`和`数据点`
    ACDeviceCommand *deviceCmd = [[ACDeviceCommand alloc] initWithCode:@"code" binaryData:binaryData];

    ACDeviceTask *task = [[ACDeviceTask alloc] initWithName:@"taskName"
                                                       desc:@"taskDesc"
                                                   timeRule:timeRule
                                                    command:deviceCmd];

    [deviceManager addTask:task callback:^(ACDeviceTask *task, NSError *error) {
        if (error) {
            //添加失败, 着重检查`ACDeviceCommand`和`ACTimeRule`中参数是否有问题
            return;
        }
        //添加成功, 返回任务对象
    }];
}

修改定时任务

- (void)modifyDeviceTask {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];

    /**
     修改设备定时任务
     注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
     参数`task`可通过`listTask`接口获取
     */
    [deviceManager modifyTask:@"DeviceTask" callback:^(ACDeviceTask *task, NSError *error) {
        if (error) {
            //修改失败, 请检查入参`task`是否正确, `task`可通过`listTask`接口获取
            return;
        }
        //修改成功, 修改后的设备定时任务对象
        //注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
        //修改后的定时任务默认是`开启`状态, 如需要关闭, 请调用`closeTask`接口

    }];
}

开启定时任务

- (void)openDeviceTask {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    /**
     开启定时任务
     入参`taskId`可通过`listTask`接口获取
     */
    [deviceManager openTask:@"taskId" callback:^(NSError *error) {
        if (error) {
            //开启失败, 请检查入参`taskId`是否正确, `taskId`可通过`listTask`接口获取
            return;
        }
        //开启定时任务成功
    }];
}

关闭定时任务

- (void)closeDeviceTask {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    /**
     关闭定时任务
     入参`taskId`可通过`listTask`接口获取
     */
    [deviceManager closeTask:@"taskId" callback:^(NSError *error) {
        if (error) {
            //关闭失败, 请检查入参`taskId`是否正确, `taskId`可通过`listTask`接口获取
            return;
        }
        //关闭定时任务成功
    }];
}

删除定时任务

- (void)deleteDeviceTask {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    /**
     删除定时任务
     入参`taskId`可通过`listTask`接口获取
     */
    [deviceManager deleteTask:@"taskId" callback:^(NSError *error) {
        if (error) {
            //删除失败, 请检查入参`taskId`是否正确, `taskId`可通过`listTask`接口获取
            return;
        }
        //删除定时任务成功
    }];
}

设备定时任务组

||SKIP||

定时管理器 -- ACDeviceTimerManager

ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];

添加定时任务组


- (void)addDeviceTaskGroups {
    //设备任务组
    NSMutableArray *tasks = [NSMutableArray array];

    //将任务添加到任务组
    [tasks addObject:[self addTaskOne]];
    [tasks addObject:[self addTaskTwo]];

    //创建设备定时任务组
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    [deviceManager addtasks:tasks toGroup:@"groupName" callback:^(ACDeviceTaskGroup *taskGroup, NSError *error) {
        if (error) {
            //添加失败, 着重检查`ACDeviceCommand`和`ACTimeRule`中参数是否有问题
            return;
        }
        //添加成功, 返回设备任务组对象
    }];

}

//添加任务一
- (ACDeviceTask *)addTaskOne {
    ACTimeRule *timeRule = [[ACTimeRule alloc] initWithTimeZone:[NSTimeZone systemTimeZone]
                                                      timeCycle:@"week[1, 2, 3]"
                                                      timePoint:@"2016-07-18 16:39:03"];

    ACDeviceCommand *deviceCmd = [[ACDeviceCommand alloc] initWithCode:@"code" binaryData:@"binaryData"];

    ACDeviceTask *task = [[ACDeviceTask alloc] initWithName:@"taskName1"
                                                       desc:@"taskDesc1"
                                                   timeRule:timeRule
                                                    command:deviceCmd];
    return task;
}

//添加任务二
- (ACDeviceTask *)addTaskTwo {
    ACTimeRule *timeRule = [[ACTimeRule alloc] initWithTimeZone:[NSTimeZone systemTimeZone]
                                                      timeCycle:@"once"
                                                      timePoint:@"2016-07-18 20:30:00"];

    ACDeviceCommand *deviceCmd = [[ACDeviceCommand alloc] initWithCode:@"code" binaryData:@"binaryData"];

    ACDeviceTask *task = [[ACDeviceTask alloc] initWithName:@"taskName2"
                                                       desc:@"taskDesc2"
                                                   timeRule:timeRule
                                                    command:deviceCmd];
    return task;
}

修改定时任务组

- (void)modifyDeviceTaskGroup {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];

    /**
     修改设备定时任务组
     注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
     参数`task`可通过`listTaskGroup`接口获取
     */
    [deviceManager modifyTaskGroup:@"taskGroup" callback:^(ACDeviceTaskGroup *taskGroup, NSError *error) {
        if (error) {
            //修改失败, 请检查入参`taskGroup`是否正确, `task`可通过`listTaskGroup`接口获取
            return;
        }
        //修改成功, 修改后的设备定时任务对象
        //注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
        //修改后的定时任务默认是`开启`状态, 如需要关闭, 请调用`closeTaskGroup`接口
    }];
}

开启定时任务组

- (void)openDeviceTaskGroup {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    /**
     开启定时任务组
     入参`taskGroupId`可通过`listTaskGroup`接口获取
     */
    [deviceManager openTaskGroup:@"taskGroupId" callback:^(NSError *error) {
        if (error) {
            //开启失败, 请检查入参`taskId`是否正确, taskGroupId`可通过`listTaskGroup`接口获取
            return;
        }
        //开启定时任务组成功
    }];
}

关闭定时任务组

- (void)closeDeviceTaskGroup {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    /**
     关闭定时任务组
     入参`taskGroupId`可通过`listTaskGroup`接口获取
     */
    [deviceManager closeTaskGroup:@"taskGroupId" callback:^(NSError *error) {
        if (error) {
            //关闭失败, 请检查入参`taskId`是否正确, taskGroupId`可通过`listTaskGroup`接口获取
            return;
        }
        //关闭定时任务组成功
    }];
}

删除定时任务组

- (void)deleteDeviceTaskGroup {
    ACDeviceTimerManager *deviceManager = [[ACDeviceTimerManager alloc] initWithDeviceId:@"deviceId"];
    /**
     删除定时任务组
     入参`taskGroupId`可通过`listTaskGroup`接口获取
     */
    [deviceManager deleteTaskGroup:@"taskGroupId" callback:^(NSError *error) {
        if (error) {
            //删除失败, 请检查入参`taskId`是否正确, taskGroupId`可通过`listTaskGroup`接口获取
            return;
        }
        //删除定时任务组成功
    }];
}

用户定时任务

||SKIP||

定时管理器 -- ACUserTimerManager

ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];

添加定时任务

- (void)addUserTask {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];

    /**
    添加定时任务
    定时任务从创建时刻开始默认开启状态, `timePoint`中只取比你的`timeCycle`下一级别的数据
    timePoint的格式为统一标准格式, 但是实际使用的时候是向后解析, 即:
    如果是week循环任务, 只需要关注`-18 16:39:03`;  `2016-07`    不起作用, 只为统一格式
    如果是day 循环任务, 只需要关注    `16:39:03`;  `2016-07-18` 不起作用, 只为统一格式
    其余的循环周期做同样处理
     */
    ACTimeRule *timeRule = [[ACTimeRule alloc] initWithTimeZone:[NSTimeZone systemTimeZone]
                                                      timeCycle:@"week[1, 2, 3]"
                                                      timePoint:@"2016-07-18 16:39:03"];

    /**
     其中参数对应开发者控制台中`UDS管理`中的参数, 如果创建任务失败, 请核对参数是否与控制台参数一致
     */
    ACUserCommand *userCmd = [[ACUserCommand alloc] initWithSubDomain:@"subDomain"
                                                              service:@"serviceName"
                                                               method:@"methodName"
                                                               params:@"param"];

    ACUserTask *task = [[ACUserTask alloc] initWithName:@"taskName"
                                                   desc:@"taskDesc"
                                               timeRule:timeRule
                                                command:userCmd];

    [userManager addTask:task callback:^(ACUserTask *task, NSError *error) {
        if (error) {
            //添加失败, 着重检查`ACUserCommand`和`ACTimeRule`中参数是否有问题
            return;
        }
        //添加成功, 返回任务对象
    }];
}

修改定时任务

- (void)modifyUserTask {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];

    /**
     修改用户定时任务
     注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
     参数`task`可通过`listTask`接口获取
    */
    [userManager modifyTask:@"userTask" callback:^(ACUserTask *task, NSError *error) {
        if (error) {
            //修改失败, 请检查入参`task`是否正确, `task`可通过`listTask`接口获取
            return;
        }
        //修改成功, 修改后的用户定时任务对象
        //注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
        //修改后的定时任务默认是`开启`状态, 如需要关闭, 请调用`closeTask`接口

    }];
}

开启定时任务

- (void)openUserTask {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    /**
     开启定时任务
     入参`taskId`可通过`listTask`接口获取
     */
    [userManager openTask:@"taskId" callback:^(NSError *error) {
        if (error) {
            //开启失败, 请检查入参`taskId`是否正确, `taskId`可通过`listTask`接口获取
            return;
        }
        //开启定时任务成功
    }];
}

关闭定时任务

- (void)closeUserTask {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    /**
     关闭定时任务
     入参`taskId`可通过`listTask`接口获取
     */
    [userManager closeTask:@"taskId" callback:^(NSError *error) {
        if (error) {
            //关闭失败, 请检查入参`taskId`是否正确, `taskId`可通过`listTask`接口获取
            return;
        }
        //关闭定时任务成功
    }];
}

删除定时任务

- (void)deleteUserTask {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    /**
     删除定时任务
     入参`taskId`可通过`listTask`接口获取
     */
    [userManager deleteTask:@"taskId" callback:^(NSError *error) {
        if (error) {
            //删除失败, 请检查入参`taskId`是否正确, `taskId`可通过`listTask`接口获取
            return;
        }
        //删除定时任务成功
    }];
}

用户定时任务组

||SKIP||

添加定时任务组


- (void)addUserTaskGroups {
    //用户任务组
    NSMutableArray *tasks = [NSMutableArray array];

    //将任务添加到任务组
    [tasks addObject:[self addTaskOne]];
    [tasks addObject:[self addTaskTwo]];

    //创建用户定时任务组
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    [userManager addtasks:tasks toGroup:@"groupName" callback:^(ACUserTaskGroup *taskGroup, NSError *error) {
        if (error) {
            //添加失败, 着重检查`ACUserCommand`和`ACTimeRule`中参数是否有问题
            return;
        }
        //添加成功, 返回用户任务组对象
    }];

}

//添加任务一
- (ACUserTask *)addTaskOne {
    ACTimeRule *timeRule = [[ACTimeRule alloc] initWithTimeZone:[NSTimeZone systemTimeZone]
                                                      timeCycle:@"week[1, 2, 3]"
                                                      timePoint:@"2016-07-18 16:39:03"];

    ACUserCommand *userCmd = [[ACUserCommand alloc] initWithSubDomain:@"subDomain"
                                                              service:@"serviceName"
                                                               method:@"method"
                                                               params:@"param"];

    ACUserTask *task = [[ACUserTask alloc] initWithName:@"taskName1"
                                                   desc:@"taskDesc1"
                                               timeRule:timeRule
                                                command:userCmd];
    return task;
}

//添加任务二
- (ACUserTask *)addTaskTwo {
    ACTimeRule *timeRule = [[ACTimeRule alloc] initWithTimeZone:[NSTimeZone systemTimeZone]
                                                      timeCycle:@"once"
                                                      timePoint:@"2016-07-18 20:30:00"];

    ACUserCommand *userCmd = [[ACUserCommand alloc] initWithSubDomain:@"subDomain"
                                                              service:@"serviceName"
                                                               method:@"method"
                                                               params:@"param"];

    ACUserTask *task = [[ACUserTask alloc] initWithName:@"taskName2"
                                                   desc:@"taskDesc2"
                                               timeRule:timeRule
                                                command:userCmd];
    return task;

}

修改定时任务组

- (void)modifyUserTaskGroup {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];

    /**
     修改用户定时任务组
     注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
     参数`task`可通过`listTaskGroup`接口获取
     */
    [userManager modifyTaskGroup:@"taskGroup" callback:^(ACUserTaskGroup *taskGroup, NSError *error) {
        if (error) {
            //修改失败, 请检查入参`taskGroup`是否正确, `task`可通过`listTaskGroup`接口获取
            return;
        }
        //修改成功, 修改后的用户定时任务对象
        //注: 修改是`覆盖修改`, 即以最后一次上传的数据为准, 以前的数据会被覆盖掉
        //修改后的定时任务默认是`开启`状态, 如需要关闭, 请调用`closeTaskGroup`接口
    }];
}

开启定时任务组

- (void)openUserTaskGroup {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    /**
     开启定时任务组
     入参`taskGroupId`可通过`listTaskGroup`接口获取
     */
    [userManager openTaskGroup:@"taskGroupId" callback:^(NSError *error) {
        if (error) {
            //开启失败, 请检查入参`taskId`是否正确, taskGroupId`可通过`listTaskGroup`接口获取
            return;
        }
        //开启定时任务组成功
    }];
}

关闭定时任务组

- (void)closeUserTaskGroup {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    /**
     关闭定时任务组
     入参`taskGroupId`可通过`listTaskGroup`接口获取
     */
    [userManager closeTaskGroup:@"taskGroupId" callback:^(NSError *error) {
        if (error) {
            //关闭失败, 请检查入参`taskId`是否正确, taskGroupId`可通过`listTaskGroup`接口获取
            return;
        }
        //关闭定时任务组成功
    }];
}

删除定时任务组

- (void)deleteUserTaskGroup {
    ACUserTimerManager *userManager = [[ACUserTimerManager alloc] init];
    /**
     删除定时任务组
     入参`taskGroupId`可通过`listTaskGroup`接口获取
     */
    [userManager deleteTaskGroup:@"taskGroupId" callback:^(NSError *error) {
        if (error) {
            //删除失败, 请检查入参`taskId`是否正确, taskGroupId`可通过`listTaskGroup`接口获取
            return;
        }
        //删除定时任务组成功
    }];
}