yx_app_upgrade_flutter/lib/app_upgrade_plugin.dart

126 lines
3.8 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}