1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- export function useVersionUpdate() {
- function getVersion() {
- // 获取当前应用版本
- plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
- // 请求服务器,获取最新版本信息 (示例)
- uni.request({
- url: 'https://your-api-domain.com/check-update',
- method: 'GET',
- data: {
- appid: plus.runtime.appid,
- version: widgetInfo.version,
- versionCode: widgetInfo.versionCode
- },
- success: (res) => {
- if (res.statusCode === 200) {
- const serverData = res.data;
- // 对比版本号[2](@ref)
- if (compareVersion(serverData.version, widgetInfo.version) > 0) {
- // 发现新版本,提示用户更新
- this.showUpdateDialog(serverData);
- }
- }
- }
- });
- });
- }
- function compareVersion(v1, v2) {
- v1 = v1.split('.');
- v2 = v2.split('.');
- const len = Math.max(v1.length, v2.length);
- while (v1.length < len) v1.push('0');
- while (v2.length < len) v2.push('0');
- for (let i = 0; i < len; i++) {
- const num1 = parseInt(v1[i]);
- const num2 = parseInt(v2[i]);
- if (num1 > num2) return 1;
- if (num1 < num2) return -1;
- }
- return 0;
- }
- // 提示用户更新并下载安装包[4](@ref)
- function showUpdateDialog(updateData) {
- uni.showModal({
- title: '发现新版本',
- showCancel: false,
- content: updateData.description || '有新的版本可用,请更新体验更多功能',
- confirmText: '立即更新',
- success: (res) => {
- if (res.confirm) {
- // 下载APK文件[4](@ref)
- plus.runtime.openURL(updateData.url); // 调用系统浏览器下载
- // 或使用下载管理器直接下载安装[5](@ref)
- }
- }
- });
- }
- return {
- getVersion,
- compareVersion,
- showUpdateDialog
- }
- }
|