插件介绍

r_upgrade是一个功能强大的Flutter插件,用于在鸿蒙平台上实现应用升级功能。该插件基于r_upgrade开发,提供了应用版本检查、升级提示等功能,支持鸿蒙、iOS和Android平台。

主要功能特点:

  • 检查APP版本更新
  • 显示版本升级弹框
  • 支持多种升级方式
  • 跨平台兼容,使用方法一致

如何使用插件

1. 包的引入

由于该三方库为自定义修改版本,需要以git形式引入。在引用的项目中,pubspec.yaml中dependencies新增配置:

dependencies:
  r_upgrade:
    git:
      url: "https://atomgit.com/"
      path: "fluttertpc_r_upgrade-master"

执行命令安装依赖:

flutter pub get

2. API的调用

2.1 基本使用示例
import 'package:flutter/material.dart';
import 'package:r_upgrade/r_upgrade.dart';

class UpgradeExample extends StatefulWidget {
  const UpgradeExample({Key? key}) : super(key: key);

  
  State<UpgradeExample> createState() => _UpgradeExampleState();
}

class _UpgradeExampleState extends State<UpgradeExample> {
  int? checkAppUpdateResult;
  int? showUpdateDialogResult;

  
  void initState() {
    super.initState();
    // 设置调试模式
    RUpgrade.setDebug(true);
  }

  // 检查APP版本更新
  Future<void> _checkAppUpdate() async {
    try {
      final result = await RUpgrade.checkAppUpdate();
      setState(() {
        checkAppUpdateResult = result;
      });
      print('检查版本更新结果: $result');
    } catch (e) {
      print('检查版本更新失败: $e');
    }
  }

  // 显示版本升级弹框
  Future<void> _showUpdateDialog() async {
    try {
      final result = await RUpgrade.showUpdateDialog();
      setState(() {
        showUpdateDialogResult = result;
      });
      print('显示升级弹框结果: $result');
    } catch (e) {
      print('显示升级弹框失败: $e');
    }
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('应用升级示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _checkAppUpdate,
              child: const Text('检查版本更新'),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: _showUpdateDialog,
              child: const Text('显示升级弹框'),
            ),
            const SizedBox(height: 20),
            if (checkAppUpdateResult != null)
              Text('检查结果: $checkAppUpdateResult'),
            const SizedBox(height: 20),
            if (showUpdateDialogResult != null)
              Text('弹框结果: $showUpdateDialogResult'),
          ],
        ),
      ),
    );
  }
}
2.2 其他API说明
// 设置调试模式
await RUpgrade.setDebug(true);

// 从网页升级APP(鸿蒙平台不支持)
// bool isSuccess = await RUpgrade.upgradeFromUrl('https://example.com');

// 从安卓应用商店升级(鸿蒙平台不支持)
// bool isSuccess = await RUpgrade.upgradeFromAndroidStore(AndroidStore.TENCENT);

// 获取安卓应用商店列表(鸿蒙平台不支持)
// List<AndroidStore>? stores = await RUpgrade.androidStores;

// 获取安卓应用商店版本号(鸿蒙平台不支持)
// String? version = await RUpgrade.getVersionFromAndroidStore(AndroidStore.TENCENT);

API说明

方法名 描述 返回值 鸿蒙支持
checkAppUpdate 检查APP版本是否有更新 Future<int?> yes
showUpdateDialog 显示APP版本升级弹框 Future<int?> yes
setDebug 设置是否打印日志 Future<void> no
upgradeFromUrl 从网页升级APP Future<bool?> no
upgradeFromAndroidStore 从安卓应用商店升级 Future<bool?> no
androidStores 获取安卓应用商店列表 Future<List<AndroidStore>?> no
getVersionFromAndroidStore 获取安卓应用商店版本号 Future<String?> no
stream 下载信息流 Stream<DownloadInfo> no
upgrade 升级安卓应用程序 Future<int?> no
cancel 取消指定ID的下载任务 Future<bool?> no
install 通过指定ID安装APK文件 Future<bool?> no
installByPath 通过指定路径安装APK文件 Future<bool?> no
pause 暂停指定ID的下载任务 Future<bool?> no
upgradeWithId 使用ID进行升级 Future<bool?> no
getDownloadStatus 根据ID获取下载状态 Future<DownloadStatus?> no
getLastUpgradedId 获取最后一次下载ID Future<int?> no
upgradeFromAppStore 从App Store升级 Future<bool?> no
getVersionFromAppStore 从App Store获取版本号 Future<int?> no

约束与限制

兼容性

在以下版本中已测试通过:

  • Flutter: 3.7.12-ohos-1.1.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
  • Flutter: 3.22.1-ohos-1.0.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;

总结

r_upgrade为鸿蒙平台提供了应用升级功能,使开发者能够轻松实现版本检查和升级提示。虽然鸿蒙平台目前仅支持部分API,但核心功能已经能够满足基本的应用升级需求。

通过本文的介绍,您可以快速上手使用r_upgrade,实现应用版本检查和升级提示功能。如果您在使用过程中遇到问题,可以参考插件的示例代码或社区文档。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐