1111
This commit is contained in:
parent
87ca82cf87
commit
223f225d94
|
|
@ -175,7 +175,7 @@ dependencies {
|
||||||
{
|
{
|
||||||
"hasUpdate": true,
|
"hasUpdate": true,
|
||||||
"isForceUpdate": false,
|
"isForceUpdate": false,
|
||||||
"versionCode": "101",
|
"versionBuildNumber": "101",
|
||||||
"versionName": "1.0.1",
|
"versionName": "1.0.1",
|
||||||
"updateContent": "1. 修复了登录问题\n2. 优化了界面显示\n3. 提升了性能",
|
"updateContent": "1. 修复了登录问题\n2. 优化了界面显示\n3. 提升了性能",
|
||||||
"downloadUrl": "https://your-cdn.com/app-release.apk",
|
"downloadUrl": "https://your-cdn.com/app-release.apk",
|
||||||
|
|
|
||||||
|
|
@ -110,19 +110,19 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
|
||||||
Future<UpgradeInfo?> checkUpdate(String url, {Map<String, dynamic>? params}) async {
|
Future<UpgradeInfo?> checkUpdate(String url, {Map<String, dynamic>? params}) async {
|
||||||
try {
|
try {
|
||||||
final packageInfo = await PackageInfo.fromPlatform();
|
final packageInfo = await PackageInfo.fromPlatform();
|
||||||
final currentVersion = packageInfo.version;
|
final currentVersionName = packageInfo.version;
|
||||||
final currentBuildNumber = packageInfo.buildNumber;
|
final currentBuildNumber = int.parse(packageInfo.buildNumber);
|
||||||
|
|
||||||
// 准备请求参数
|
// 准备请求参数
|
||||||
final requestParams = {
|
final requestParams = {
|
||||||
'version': currentVersion,
|
'version': currentVersionName,
|
||||||
'buildNumber': currentBuildNumber,
|
'buildNumber': currentBuildNumber,
|
||||||
'platform': Platform.isAndroid ? 'android' : 'ios',
|
'platform': Platform.isAndroid ? 'android' : 'ios',
|
||||||
...?params,
|
...?params,
|
||||||
};
|
};
|
||||||
|
|
||||||
debugPrint('==== 检查更新 ====');
|
debugPrint('==== 检查更新 ====');
|
||||||
debugPrint('当前版本: $currentVersion (Build: $currentBuildNumber)');
|
debugPrint('当前版本: $currentVersionName (Build: $currentBuildNumber)');
|
||||||
debugPrint('请求URL: $url');
|
debugPrint('请求URL: $url');
|
||||||
|
|
||||||
Response? response;
|
Response? response;
|
||||||
|
|
@ -168,10 +168,39 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
|
||||||
debugPrint('响应数据: $responseData');
|
debugPrint('响应数据: $responseData');
|
||||||
|
|
||||||
// 解析更新信息
|
// 解析更新信息
|
||||||
final upgradeInfo = UpgradeInfo.fromJson(responseData);
|
// final upgradeInfo = UpgradeInfo.fromJson(responseData);
|
||||||
|
final upgradeInfo = UpgradeInfo.fromJson(
|
||||||
|
currentBuildNumber: currentBuildNumber,
|
||||||
|
currentVersionName: currentVersionName,
|
||||||
|
{
|
||||||
|
"isForceUpdate": true,
|
||||||
|
"versionBuildNumber": 101,
|
||||||
|
"versionName": "1.0.1",
|
||||||
|
"updateContent": "1. 修复了登修复了登录问题修复了登录问题修复了登录问题录问题\n2. 优化了界面显示优化了界面显示\n3. 提升了性能",
|
||||||
|
"downloadUrl":
|
||||||
|
"https://dpc-job-oss.23544.com/infra-app/making_school_asignment_app/1.0.5/1/app-release.apk",
|
||||||
|
"appStoreUrl": "https://apps.apple.com/app/id123456789",
|
||||||
|
// "apkSize": 25165824,
|
||||||
|
// "apkMd5": "d41d8cd98f00b204e9800998ecf8427e",
|
||||||
|
// "appMarkets": [
|
||||||
|
// {
|
||||||
|
// "customName": "华为应用市场",
|
||||||
|
// "market": "huawei",
|
||||||
|
// "packageName": "com.huawei.appmarket",
|
||||||
|
// "url": "appmarket://details?id=com.yourapp.package"
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "customName": "小米应用商店",
|
||||||
|
// "market": "xiaomi",
|
||||||
|
// "packageName": "com.xiaomi.market",
|
||||||
|
// "url": "mimarket://details?id=com.yourapp.package",
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// 比较版本
|
// 比较版本
|
||||||
if (_compareVersion(upgradeInfo.versionCode, currentBuildNumber) > 0) {
|
if (upgradeInfo.hasUpdate) {
|
||||||
debugPrint('✅ 发现新版本: ${upgradeInfo.versionName}');
|
debugPrint('✅ 发现新版本: ${upgradeInfo.versionName}');
|
||||||
return upgradeInfo;
|
return upgradeInfo;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -552,11 +581,8 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
|
||||||
|
|
||||||
/// 比较版本号
|
/// 比较版本号
|
||||||
/// 返回值:1表示v1大于v2,0表示相等,-1表示v1小于v2
|
/// 返回值:1表示v1大于v2,0表示相等,-1表示v1小于v2
|
||||||
int _compareVersion(String v1, String v2) {
|
int _compareVersion(int version1, int version2) {
|
||||||
try {
|
try {
|
||||||
final version1 = int.tryParse(v1) ?? 0;
|
|
||||||
final version2 = int.tryParse(v2) ?? 0;
|
|
||||||
|
|
||||||
if (version1 > version2) {
|
if (version1 > version2) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (version1 < version2) {
|
} else if (version1 < version2) {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,5 +1,5 @@
|
||||||
/// 应用商店信息
|
/// 应用商店信息
|
||||||
class AppMarketInfo {
|
class AppMarketInfo extends Object {
|
||||||
/// 应用商店
|
/// 应用商店
|
||||||
final AppMarket market;
|
final AppMarket market;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,17 @@ class UpgradeInfo {
|
||||||
final bool isForceUpdate;
|
final bool isForceUpdate;
|
||||||
|
|
||||||
/// 版本号
|
/// 版本号
|
||||||
final String versionCode;
|
final int versionBuildNumber;
|
||||||
|
|
||||||
/// 版本名称
|
/// 版本名称
|
||||||
final String versionName;
|
final String versionName;
|
||||||
|
|
||||||
|
/// 当前版本号
|
||||||
|
final int currentBuildNumber;
|
||||||
|
|
||||||
|
/// 当前版本名称
|
||||||
|
final String currentVersionName;
|
||||||
|
|
||||||
/// 更新说明
|
/// 更新说明
|
||||||
final String updateContent;
|
final String updateContent;
|
||||||
|
|
||||||
|
|
@ -35,9 +41,11 @@ class UpgradeInfo {
|
||||||
UpgradeInfo({
|
UpgradeInfo({
|
||||||
this.hasUpdate = false,
|
this.hasUpdate = false,
|
||||||
required this.isForceUpdate,
|
required this.isForceUpdate,
|
||||||
required this.versionCode,
|
required this.versionBuildNumber,
|
||||||
required this.versionName,
|
required this.versionName,
|
||||||
required this.updateContent,
|
required this.updateContent,
|
||||||
|
required this.currentBuildNumber,
|
||||||
|
required this.currentVersionName,
|
||||||
this.downloadUrl,
|
this.downloadUrl,
|
||||||
this.appStoreUrl,
|
this.appStoreUrl,
|
||||||
this.apkSize,
|
this.apkSize,
|
||||||
|
|
@ -45,12 +53,23 @@ class UpgradeInfo {
|
||||||
this.appMarkets,
|
this.appMarkets,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory UpgradeInfo.fromJson(Map<String, dynamic> json) {
|
/// 从JSON创建
|
||||||
|
/// [currentBuildNumber] 当前版本号
|
||||||
|
/// [currentVersion] 当前版本名称
|
||||||
|
factory UpgradeInfo.fromJson(
|
||||||
|
Map<String, dynamic> json, {
|
||||||
|
required int currentBuildNumber,
|
||||||
|
required String currentVersionName,
|
||||||
|
}) {
|
||||||
|
final versionBuildNumber = json['versionBuildNumber'];
|
||||||
|
final versionName = json['versionName'];
|
||||||
return UpgradeInfo(
|
return UpgradeInfo(
|
||||||
hasUpdate: json['hasUpdate'] as bool? ?? false,
|
hasUpdate: versionBuildNumber != currentBuildNumber || versionName != currentVersionName,
|
||||||
isForceUpdate: json['isForceUpdate'] ?? false,
|
isForceUpdate: json['isForceUpdate'] ?? false,
|
||||||
versionCode: json['versionCode'] ?? '',
|
versionBuildNumber: versionBuildNumber,
|
||||||
versionName: json['versionName'] ?? '',
|
versionName: versionName,
|
||||||
|
currentBuildNumber: currentBuildNumber,
|
||||||
|
currentVersionName: currentVersionName,
|
||||||
updateContent: json['updateContent'] ?? '',
|
updateContent: json['updateContent'] ?? '',
|
||||||
downloadUrl: json['downloadUrl'] as String?,
|
downloadUrl: json['downloadUrl'] as String?,
|
||||||
appStoreUrl: json['appStoreUrl'] as String?,
|
appStoreUrl: json['appStoreUrl'] as String?,
|
||||||
|
|
@ -66,9 +85,11 @@ class UpgradeInfo {
|
||||||
return {
|
return {
|
||||||
'hasUpdate': hasUpdate,
|
'hasUpdate': hasUpdate,
|
||||||
'isForceUpdate': isForceUpdate,
|
'isForceUpdate': isForceUpdate,
|
||||||
'versionCode': versionCode,
|
'versionBuildNumber': versionBuildNumber,
|
||||||
'versionName': versionName,
|
'versionName': versionName,
|
||||||
'updateContent': updateContent,
|
'updateContent': updateContent,
|
||||||
|
'currentBuildNumber': currentBuildNumber,
|
||||||
|
'currentVersionName': currentVersionName,
|
||||||
'downloadUrl': downloadUrl,
|
'downloadUrl': downloadUrl,
|
||||||
'appStoreUrl': appStoreUrl,
|
'appStoreUrl': appStoreUrl,
|
||||||
'apkSize': apkSize,
|
'apkSize': apkSize,
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,7 @@ class MarketSelectionDialog extends StatelessWidget {
|
||||||
await showDialog(
|
await showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
useRootNavigator: true,
|
useRootNavigator: true,
|
||||||
builder: (context) => MarketSelectionDialog(
|
builder: (context) => MarketSelectionDialog(markets: markets, onSelected: onSelected),
|
||||||
markets: markets,
|
|
||||||
onSelected: onSelected,
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue