OTA

普通设备OTA

若使用场景为开启APP之后自动检测升级,建议把检测升级过程放在application里,并维护一个deviceId和ACOTAUpgradeInfo的映射关系,通过static修饰放到内存里,在进入OTA升级页面后可以直接取出来显示。如想实现用户取消升级之后不再提示功能,则可以自己维护一个变量记录。

获取OTA管理器对象

@interface ACOTAManager : NSObject

检查升级

检查设备是否有新的OTA版本


    ACOTACheckInfo *checkInfo = [ACOTACheckInfo checkInfoWithDeviceId:<#deviceId#> otaType:ACOTACheckInfoTypeCustom];
    [ACOTAManager checkUpdateWithSubDomain:<#subDomain#> OTACheckInfo:checkInfo callback:^(ACOTAUpgradeInfo *checkInfo, NSError *error) {
        NSLog(@"资源:%@---meta:%@",checkInfo, checkInfo.meta);
        if (!checkInfo.update) {
            NSLog(@"不需要升级");
            return;
        }
       //调用确认升级接口
    }];

相关注意事项如下:

  1. 用户需要根据实际应用场景中设备端类型选择otaType为ACOTACheckInfoTypeSystem或者ACOTACheckInfoTypeCustom。

确认升级

[ACOTAManager confirmUpdateWithSubDomain:subDomain deviceId:deviceId newVersion:newVersion callback:^(NSError *error) {
          if(error) {
          //返回失败信息,根据error.code做不同的提示或者处理
          } else {
          //确认升级
         }
}];

蓝牙设备OTA

获取OTA管理器对象

@interface ACOTAManager : NSObject

查询OTA新版本信息

- (IBAction)checkUpdate:(id)sender {
    ACOTACheckInfo *checkInfo = [ACOTACheckInfo checkInfoWithPhysicalDeviceId:<#PhysicalDeviceId#> version:<#version#>];

    [ACOTAManager checkUpdateWithSubDomain:<#subDomain#>
                              OTACheckInfo:checkInfo
                                  callback:^(ACOTAUpgradeInfo *checkInfo, NSError *error) {
                                  if (error) {
                                          //错误处理
                                          return;
                                      }
                                      if (!checkInfo.update) {
                                          //不需要升级
                                          return;
                                      }
                                      //提示是否下载ota文件
    }];
}

下载OTA文件


- (void)downloadOTA:(ACOTAUpgradeInfo *)checkInfo {
    //获取文件管理器对象
    ACFileManager *manager = [[ACFileManager alloc] init];
    [manager downFileWithsession:checkInfo.meta.downloadUrl checkSum:checkInfo.meta.checksum callBack:^(float progress, NSError *error) {
    //进度回调
        NSLog(@"%f---error:%@", progress, error);
    } CompleteCallback:^(NSString *filePath) {
        NSLog(@"下载完成:%@", filePath);
    }];
}