更新系统
概述
更新系统用于检查应用版本更新。支持强制更新、可选更新,可自动打开浏览器下载或由调用方自行处理。
运行模式
通过 txnet_set_update_mode 设置:
| 模式 | 值 | 行为 |
|---|---|---|
| 默认模式 | 0 | 控制台交互,强制更新时自动打开浏览器并退出 |
| 自定义模式 | 1 | 仅触发回调,由调用方处理更新逻辑 |
默认模式行为
| 情况 | 行为 |
|---|---|
| 服务端未配置版本 | 打印错误,exit(1) |
| 已是最新版本 | 打印提示,继续执行 |
| 需要更新但无下载链接 | 打印错误,exit(1) |
| 强制更新 | 打开浏览器,exit(0) |
| 可选更新,用户选择更新 | 打开浏览器,exit(0) |
| 可选更新,用户跳过 | 继续执行 |
函数
txnet_set_update_mode
cpp
void txnet_set_update_mode(int mode);设置更新检查模式。
| 参数 | 类型 | 说明 |
|---|---|---|
mode | int | 0=默认模式,1=自定义模式 |
txnet_set_update_callback
cpp
void txnet_set_update_callback(txnet_update_callback cb);设置更新检查结果回调函数。
txnet_check_update
cpp
void txnet_check_update();检查版本更新。此函数会阻塞直到检查完成。
前置条件
必须已登录成功(txnet_is_logged_in() == true)
回调函数
txnet_update_callback
cpp
typedef void (*txnet_update_callback)(
bool need_update,
bool force_update,
int latest_version,
const char* version_name,
const char* update_content,
const char* download_url,
const char* netdisk_url
);| 参数 | 类型 | 说明 |
|---|---|---|
need_update | bool | 是否需要更新 |
force_update | bool | 是否为强制更新 |
latest_version | int | 最新版本号 |
version_name | const char* | 最新版本名称 |
update_content | const char* | 更新内容说明 |
download_url | const char* | 直接下载链接 |
netdisk_url | const char* | 网盘下载链接 |
示例
默认模式
cpp
#include "txnet.h"
void onUpdate(bool need, bool force, int ver, const char* name,
const char* content, const char* url, const char* disk) {
if (need) {
printf("发现新版本: %s (v%d)\n", name, ver);
printf("更新内容: %s\n", content);
}
}
int main() {
txnet_init(&config);
txnet_connect();
txnet_login();
txnet_set_update_callback(onUpdate);
txnet_check_update();
printf("继续运行...\n");
return 0;
}自定义模式(UI 集成)
cpp
#include "txnet.h"
void onUpdate(bool need, bool force, int ver, const char* name,
const char* content, const char* url, const char* disk) {
if (!need) {
showToast("已是最新版本");
return;
}
if (force) {
showUpdateDialog(name, content, url, true);
} else {
showUpdateDialog(name, content, url, false);
}
}
void checkUpdate() {
txnet_set_update_mode(1);
txnet_set_update_callback(onUpdate);
txnet_check_update();
}