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;
}
//调用确认升级接口
}];
相关注意事项如下:
- 用户需要根据实际应用场景中设备端类型选择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);
}];
}