1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import 'package:apk_update/utils/utils.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'apk_update_platform_interface.dart';
class ApkUpdate {
/// 检测应用版本(老版本方法)
/// baseUrl
/// versionNumber 当前应用版本号(versionCode)
/// productNo 产品号
/// onceDay 一天提示一次(应用首页设置true)
/// appleId 苹果应用id
/// 产品号:1.司机App(Android) 2.vipApp(Android) 4.马上富通App(Android) 9.马上来车App(Android)
/// 27.司机App(iOS) 28.vipApp(iOS) 30.马上富通App(iOS) 29.马上来车App(iOS)
void checkAppVersion({
required String baseUrl,
required int versionNumber,
required int productNo,
Map<String, dynamic>? paramsOSS,
bool onceDay = false,
required String appleId,
Function()? downloadApkError, // 下载Apk错误
}) {
//App2.vipApp,3,vip-pc。4,马上富通。5,马上富通pc。6,微信货主。7,货主pc。8,马上审。默认为1
checkVersion(
url: "$baseUrl$getSystemVersionByNumber",
method: Method.get,
params: {"versionNumber": versionNumber, "productNo": productNo},
isOssDownload: paramsOSS != null ? 1 : 0,
onceDay: onceDay,
jumpAppStore: () {
// 跳转AppStore
debugPrint("===== jumpAppStore");
ApkUpdatePlatform.instance.jumpAppStore(appleId);
},
installApk: (String? path) {
// 安装Apk
debugPrint("===== installApk");
ApkUpdatePlatform.instance.installApk(path);
},
downloadApkError: () {
// 下载Apk错误
debugPrint("===== downloadApkError");
// 项目中没有依赖toast,自己项目中实现
downloadApkError?.call();
},
);
}
/// 升级版本(新)
/// url 全路径
/// appleId 苹果应用id
/// params {"versionNumber": 1, "product-code": "carrier-driver-app"}
/// paramsOSS {"ak": "ak", "sk": "sk", "token": "token", "objectKey": "objectKey", "endpoint": "endpoint", "bucketName": "bucketName", }
void updateApp({
required String url,
required Map<String, dynamic> params,
bool onceDay = false,
required String appleId,
Map<String, dynamic>? paramsOSS,
Function()? downloadApkError, // 下载Apk错误
}) {
checkVersion(
url: url,
method: Method.post,
params: params,
isOssDownload: paramsOSS != null ? 1 : 0,
header: {"product-code": params["productCode"]},
onceDay: onceDay,
jumpAppStore: () {
// 跳转AppStore
debugPrint("===== jumpAppStore");
ApkUpdatePlatform.instance.jumpAppStore(appleId);
},
installApk: (String? path) {
// 安装Apk
debugPrint("===== installApk");
ApkUpdatePlatform.instance.installApk(path);
},
downloadApk: (String? path) {
final dio = Dio();
dio
.get("${paramsOSS?['baseUrl']}$generateByExt",
queryParameters: {
"extension": "apk",
"bucketName": paramsOSS?["bucketName"]
},
options: Options(headers: {
"token": paramsOSS?['token'],
"product-code": params["productCode"]
}))
.then((res) {
if (res.data == null || res.data['code'] != 0) {
debugPrint('获取OSS授权失败');
downloadApkError?.call();
return;
}
var map = res.data['data'];
// 使用OSS下载
var ak = map?['onceAccessKeyId'];
var sk = map?["onceAccessKeySecret"];
var token = map?["onceSecurityToken"];
var objectKey = paramsOSS?["objectKey"];
var endpoint = paramsOSS?["endpoint"];
var bucketName = paramsOSS?["bucketName"];
var localPath = path;
if (localPath == null) {
// 项目中没有依赖toast,自己项目中实现
downloadApkError?.call();
return;
}
ApkUpdatePlatform.instance.downloadApk(
ak, sk, token, objectKey, endpoint, bucketName, localPath);
});
},
downloadApkError: () {
// 下载Apk错误
debugPrint("===== downloadApkError");
// 项目中没有依赖toast,自己项目中实现
downloadApkError?.call();
},
);
}
}