126 lines
3.8 KiB
Dart
126 lines
3.8 KiB
Dart
import 'dart:io';
|
||
|
||
// 确保方法通道实现被导入,以便正确初始化
|
||
// ignore: unused_import
|
||
import 'app_upgrade_plugin_method_channel.dart';
|
||
import 'app_upgrade_plugin_platform_interface.dart';
|
||
import 'core/http_config.dart';
|
||
import 'models/upgrade_info.dart';
|
||
|
||
// 简化版API(推荐使用)
|
||
export 'app_upgrade_simple.dart';
|
||
// HTTP配置
|
||
export 'core/http_config.dart';
|
||
// 权限帮助类
|
||
export 'core/permission_helper.dart';
|
||
export 'models/upgrade_info.dart';
|
||
export 'widgets/widgets.dart';
|
||
|
||
class AppUpgradePlugin {
|
||
// 单例模式,确保全局只有一个实例
|
||
static final AppUpgradePlugin _instance = AppUpgradePlugin._internal();
|
||
|
||
factory AppUpgradePlugin() => _instance;
|
||
|
||
/// 全局设置:是否忽略证书验证
|
||
/// 默认情况下,插件会根据编译模式自动决定(Debug模式忽略,Release模式验证)
|
||
/// 设置为true将强制在所有环境下忽略证书验证
|
||
static bool ignoreCertificate = true;
|
||
|
||
AppUpgradePlugin._internal() {
|
||
// 确保平台接口已正确初始化
|
||
_ensurePlatformInitialized();
|
||
|
||
// 根据全局设置配置HTTP
|
||
if (ignoreCertificate) {
|
||
configureHttp(HttpConfig.unsafe);
|
||
}
|
||
}
|
||
|
||
// 确保平台接口初始化
|
||
void _ensurePlatformInitialized() {
|
||
// 触发平台接口的懒加载初始化
|
||
final _ = AppUpgradePluginPlatform.instance;
|
||
}
|
||
|
||
/// 配置HTTP设置
|
||
///
|
||
/// 示例:
|
||
/// ```dart
|
||
/// // 开发环境配置
|
||
/// AppUpgradePlugin().configureHttp(HttpConfig.development);
|
||
///
|
||
/// // 自定义配置
|
||
/// AppUpgradePlugin().configureHttp(HttpConfig(
|
||
/// ignoreCertificate: true,
|
||
/// connectTimeout: 60,
|
||
/// defaultMethod: 'POST',
|
||
/// ));
|
||
/// ```
|
||
void configureHttp(HttpConfig config) {
|
||
AppUpgradePluginPlatform.instance.configureHttp(config);
|
||
}
|
||
|
||
/// 获取平台版本
|
||
Future<String?> getPlatformVersion() {
|
||
return AppUpgradePluginPlatform.instance.getPlatformVersion();
|
||
}
|
||
|
||
Future<int?> getAndroidSdkVersion() {
|
||
return AppUpgradePluginPlatform.instance.getAndroidSdkVersion();
|
||
}
|
||
|
||
/// 获取当前App信息
|
||
Future<Map<String, String>> getAppInfo() {
|
||
return AppUpgradePluginPlatform.instance.getAppInfo();
|
||
}
|
||
|
||
/// 检查更新
|
||
/// [url] 检查更新的接口地址
|
||
/// [params] 额外的请求参数
|
||
Future<UpgradeInfo?> checkUpdate(String url, {Map<String, dynamic>? params}) {
|
||
return AppUpgradePluginPlatform.instance.checkUpdate(url, params: params);
|
||
}
|
||
|
||
/// 下载APK文件(仅Android)
|
||
/// [url] APK下载地址
|
||
/// [onProgress] 下载进度回调
|
||
/// [savePath] 保存路径(可选,默认使用系统下载目录)
|
||
Future<String?> downloadApk(String url, {Function(DownloadProgress)? onProgress, String? savePath}) {
|
||
if (!Platform.isAndroid) {
|
||
throw UnsupportedError('downloadApk only supports Android platform');
|
||
}
|
||
return AppUpgradePluginPlatform.instance.downloadApk(url, onProgress: onProgress, savePath: savePath);
|
||
}
|
||
|
||
/// 安装APK(仅Android)
|
||
/// [filePath] APK文件路径
|
||
Future<bool> installApk(String filePath) {
|
||
if (!Platform.isAndroid) {
|
||
return Future.value(false);
|
||
}
|
||
return AppUpgradePluginPlatform.instance.installApk(filePath);
|
||
}
|
||
|
||
/// 跳转到应用商店
|
||
/// [url] 应用商店地址
|
||
Future<bool> goToAppStore(String url) {
|
||
return AppUpgradePluginPlatform.instance.goToAppStore(url);
|
||
}
|
||
|
||
/// 获取下载目录路径
|
||
Future<String?> getDownloadPath() {
|
||
return AppUpgradePluginPlatform.instance.getDownloadPath();
|
||
}
|
||
|
||
/// 检查是否已下载指定版本的APK
|
||
/// [version] 版本号
|
||
/// [md5] MD5值(可选)
|
||
Future<bool> checkApkExists(String version, String? md5) {
|
||
if (!Platform.isAndroid) {
|
||
return Future.value(false);
|
||
}
|
||
return AppUpgradePluginPlatform.instance.checkApkExists(version, md5);
|
||
}
|
||
}
|