1111
This commit is contained in:
parent
87ca82cf87
commit
223f225d94
|
|
@ -175,7 +175,7 @@ dependencies {
|
|||
{
|
||||
"hasUpdate": true,
|
||||
"isForceUpdate": false,
|
||||
"versionCode": "101",
|
||||
"versionBuildNumber": "101",
|
||||
"versionName": "1.0.1",
|
||||
"updateContent": "1. 修复了登录问题\n2. 优化了界面显示\n3. 提升了性能",
|
||||
"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 {
|
||||
try {
|
||||
final packageInfo = await PackageInfo.fromPlatform();
|
||||
final currentVersion = packageInfo.version;
|
||||
final currentBuildNumber = packageInfo.buildNumber;
|
||||
final currentVersionName = packageInfo.version;
|
||||
final currentBuildNumber = int.parse(packageInfo.buildNumber);
|
||||
|
||||
// 准备请求参数
|
||||
final requestParams = {
|
||||
'version': currentVersion,
|
||||
'version': currentVersionName,
|
||||
'buildNumber': currentBuildNumber,
|
||||
'platform': Platform.isAndroid ? 'android' : 'ios',
|
||||
...?params,
|
||||
};
|
||||
|
||||
debugPrint('==== 检查更新 ====');
|
||||
debugPrint('当前版本: $currentVersion (Build: $currentBuildNumber)');
|
||||
debugPrint('当前版本: $currentVersionName (Build: $currentBuildNumber)');
|
||||
debugPrint('请求URL: $url');
|
||||
|
||||
Response? response;
|
||||
|
|
@ -168,10 +168,39 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
|
|||
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}');
|
||||
return upgradeInfo;
|
||||
} else {
|
||||
|
|
@ -552,11 +581,8 @@ class MethodChannelAppUpgradePlugin extends AppUpgradePluginPlatform {
|
|||
|
||||
/// 比较版本号
|
||||
/// 返回值:1表示v1大于v2,0表示相等,-1表示v1小于v2
|
||||
int _compareVersion(String v1, String v2) {
|
||||
int _compareVersion(int version1, int version2) {
|
||||
try {
|
||||
final version1 = int.tryParse(v1) ?? 0;
|
||||
final version2 = int.tryParse(v2) ?? 0;
|
||||
|
||||
if (version1 > version2) {
|
||||
return 1;
|
||||
} 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;
|
||||
|
||||
|
|
|
|||
|
|
@ -9,11 +9,17 @@ class UpgradeInfo {
|
|||
final bool isForceUpdate;
|
||||
|
||||
/// 版本号
|
||||
final String versionCode;
|
||||
final int versionBuildNumber;
|
||||
|
||||
/// 版本名称
|
||||
final String versionName;
|
||||
|
||||
/// 当前版本号
|
||||
final int currentBuildNumber;
|
||||
|
||||
/// 当前版本名称
|
||||
final String currentVersionName;
|
||||
|
||||
/// 更新说明
|
||||
final String updateContent;
|
||||
|
||||
|
|
@ -35,9 +41,11 @@ class UpgradeInfo {
|
|||
UpgradeInfo({
|
||||
this.hasUpdate = false,
|
||||
required this.isForceUpdate,
|
||||
required this.versionCode,
|
||||
required this.versionBuildNumber,
|
||||
required this.versionName,
|
||||
required this.updateContent,
|
||||
required this.currentBuildNumber,
|
||||
required this.currentVersionName,
|
||||
this.downloadUrl,
|
||||
this.appStoreUrl,
|
||||
this.apkSize,
|
||||
|
|
@ -45,12 +53,23 @@ class UpgradeInfo {
|
|||
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(
|
||||
hasUpdate: json['hasUpdate'] as bool? ?? false,
|
||||
hasUpdate: versionBuildNumber != currentBuildNumber || versionName != currentVersionName,
|
||||
isForceUpdate: json['isForceUpdate'] ?? false,
|
||||
versionCode: json['versionCode'] ?? '',
|
||||
versionName: json['versionName'] ?? '',
|
||||
versionBuildNumber: versionBuildNumber,
|
||||
versionName: versionName,
|
||||
currentBuildNumber: currentBuildNumber,
|
||||
currentVersionName: currentVersionName,
|
||||
updateContent: json['updateContent'] ?? '',
|
||||
downloadUrl: json['downloadUrl'] as String?,
|
||||
appStoreUrl: json['appStoreUrl'] as String?,
|
||||
|
|
@ -66,9 +85,11 @@ class UpgradeInfo {
|
|||
return {
|
||||
'hasUpdate': hasUpdate,
|
||||
'isForceUpdate': isForceUpdate,
|
||||
'versionCode': versionCode,
|
||||
'versionBuildNumber': versionBuildNumber,
|
||||
'versionName': versionName,
|
||||
'updateContent': updateContent,
|
||||
'currentBuildNumber': currentBuildNumber,
|
||||
'currentVersionName': currentVersionName,
|
||||
'downloadUrl': downloadUrl,
|
||||
'appStoreUrl': appStoreUrl,
|
||||
'apkSize': apkSize,
|
||||
|
|
|
|||
|
|
@ -21,10 +21,7 @@ class MarketSelectionDialog extends StatelessWidget {
|
|||
await showDialog(
|
||||
context: context,
|
||||
useRootNavigator: true,
|
||||
builder: (context) => MarketSelectionDialog(
|
||||
markets: markets,
|
||||
onSelected: onSelected,
|
||||
),
|
||||
builder: (context) => MarketSelectionDialog(markets: markets, onSelected: onSelected),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue