Flutter应用升级插件kooboo_flutter_app_upgrade的使用

Flutter应用升级插件kooboo_flutter_app_upgrade的使用

kooboo_flutter_app_upgrade

简介

kooboo_flutter_app_upgrade 是一个用于在 Flutter 应用中实现应用升级功能的插件。它支持 Android 平台上的应用内升级和 iOS 平台上跳转到 App Store。

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  kooboo_flutter_app_upgrade: ^0.0.9

然后运行 flutter pub get 命令来获取依赖。

导入

在 Dart 文件中导入插件:

import 'package:flutter_app_upgrade/flutter_app_upgrade.dart';

使用

下载并安装 APK(仅适用于 Android)

使用 downloadApkInstall 方法下载并安装 APK 文件。

/// 下载并安装 APK (仅适用于 Android)
FlutterAppUpgrade.downloadApkInstall('url', '1.0.1');

监听下载进度

使用 onListenStreamData 方法监听下载进度。

/// 监听下载进度
FlutterAppUpgrade.onListenStreamData(
  (event) {
    if (event is Map && event.containsKey('progress')) {
      debugPrint('_MyAppState.initState progress ${event['progress'] * 100}');
    } else {
      debugPrint('_MyAppState.initState receive data $event');
    }
  },
  onError: (error) {
    debugPrint('_MyAppState.initState receive error ${error.message}');
  },
);

增量更新 APK(仅适用于 Android)

使用 patchInstallAppForAndroid 方法进行增量更新。

/// 增量更新 APK (仅适用于 Android)
String apkDownloadPath = await FlutterAppUpgrade.apkDownloadPath;
FlutterAppUpgrade.patchInstallAppForAndroid('$apkDownloadPath/app-V1.0_2.0.patch');

跳转应用市场(仅适用于 Android)

使用 goToMarket 方法跳转到应用市场。

/// 跳转应用市场 (仅适用于 Android)
FlutterAppUpgrade.goToMarket();

跳转 Google 应用市场(仅适用于 Android)

使用 goToGoogleMarket 方法跳转到 Google 应用市场。

/// 跳转 Google 应用市场 (仅适用于 Android)
FlutterAppUpgrade.goToGoogleMarket();

跳转 App Store(仅适用于 iOS)

使用 goToAppStore 方法跳转到 App Store。

/// 跳转 App Store (仅适用于 iOS)
FlutterAppUpgrade.goToAppStore('432274380');

示例代码

以下是一个完整的示例代码,展示了如何使用 kooboo_flutter_app_upgrade 插件。

import 'package:flutter/material.dart';
import 'package:flutter_app_upgrade/flutter_app_upgrade.dart';

void main() {
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    WidgetsBinding.instance?.addPostFrameCallback((timeStamp) {
      FlutterAppUpgrade.onListenStreamData(
        (event) {
          if (event is Map && event.containsKey('progress')) {
            debugPrint('_MyAppState.initState progress ${event['progress'] * 100}');
          } else {
            debugPrint('_MyAppState.initState receive data $event');
          }
        },
        onError: (error) {
          debugPrint('_MyAppState.initState receive error ${error.message}');
        },
      );
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Column(
          children: [
            TextButton(
              onPressed: () async {
                FlutterAppUpgrade.downloadApkInstall(
                  'url',
                  '1.0.1',
                );
              },
              child: const Text('下载并安装 APK (仅适用于 Android)'),
            ),
            const SizedBox(height: 10),
            TextButton(
              onPressed: () async {
                String apkDownloadPath = await FlutterAppUpgrade.apkDownloadPath;
                FlutterAppUpgrade.patchInstallAppForAndroid('$apkDownloadPath/app-V1.0_2.0.patch');
              },
              child: const Text('增量更新 APK (仅适用于 Android)'),
            ),
            const SizedBox(height: 10),
            TextButton(
              onPressed: () async {
                FlutterAppUpgrade.goToMarket();
              },
              child: const Text('跳转应用市场 (仅适用于 Android)'),
            ),
            const SizedBox(height: 10),
            TextButton(
              onPressed: () async {
                FlutterAppUpgrade.goToAppStore('432274380');
              },
              child: const Text('跳转 App Store (仅适用于 iOS)'),
            ),
            const SizedBox(height: 10),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter应用升级插件kooboo_flutter_app_upgrade的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用升级插件kooboo_flutter_app_upgrade的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 kooboo_flutter_app_upgrade 插件来在 Flutter 应用中实现应用升级的示例代码。这个插件可以帮助你检查应用的最新版本,并提示用户进行升级。

首先,确保你已经在 pubspec.yaml 文件中添加了 kooboo_flutter_app_upgrade 依赖:

dependencies:
  flutter:
    sdk: flutter
  kooboo_flutter_app_upgrade: ^最新版本号  # 请替换为实际的最新版本号

然后,运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中实现应用升级功能。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:kooboo_flutter_app_upgrade/kooboo_flutter_app_upgrade.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter App Upgrade Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final AppUpgrade _appUpgrade = AppUpgrade();

  @override
  void initState() {
    super.initState();
    // 检查应用版本
    _checkForUpdates();
  }

  Future<void> _checkForUpdates() async {
    try {
      // 配置升级信息,这里假设你的最新版本信息存储在一个 JSON 文件中
      final String upgradeInfoUrl = "https://example.com/app-upgrade-info.json";
      
      // 从服务器获取升级信息
      final Map<String, dynamic> upgradeInfo = await _appUpgrade.fetchUpgradeInfo(
        url: upgradeInfoUrl,
      );

      // 处理升级信息
      if (upgradeInfo != null && upgradeInfo['version'] != null) {
        final String currentVersion = "1.0.0"; // 当前应用版本,你需要根据实际情况获取
        final String latestVersion = upgradeInfo['version'];

        if (currentVersion.compareTo(latestVersion) < 0) {
          // 显示升级对话框
          _showUpgradeDialog(upgradeInfo);
        }
      }
    } catch (e) {
      // 处理错误,例如网络错误或解析错误
      print("Error checking for updates: $e");
    }
  }

  void _showUpgradeDialog(Map<String, dynamic> upgradeInfo) {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text("新版本可用"),
          content: Text(
            "发现新版本 ${upgradeInfo['version']}。更新内容: ${upgradeInfo['changelog']}",
          ),
          actions: <Widget>[
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text("稍后更新"),
            ),
            ElevatedButton(
              onPressed: () {
                // 打开下载或应用商店页面
                _openStorePage(upgradeInfo['downloadUrl']);
                Navigator.of(context).pop();
              },
              child: Text("立即更新"),
            ),
          ],
        );
      },
    );
  }

  void _openStorePage(String url) {
    // 根据平台打开应用商店或下载页面
    if (Platform.isAndroid) {
      // 对于Android,可以打开Play Store页面或APK下载链接
      launch(url);
    } else if (Platform.isIOS) {
      // 对于iOS,可以打开App Store页面
      launch(url);
    } else {
      // 其他平台处理
      throw UnsupportedError("当前平台不支持直接打开应用商店");
    }
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml 中添加了 kooboo_flutter_app_upgrade 依赖。
  2. HomePageinitState 方法中调用 _checkForUpdates 方法来检查应用是否有新版本。
  3. _checkForUpdates 方法从指定的 URL 获取升级信息,并与当前版本进行比较。
  4. 如果发现新版本,显示一个升级对话框,提示用户更新。
  5. _showUpgradeDialog 方法创建一个包含更新信息和两个按钮(稍后更新和立即更新)的对话框。
  6. _openStorePage 方法根据平台打开相应的应用商店或下载页面。

注意:你需要根据实际情况替换 upgradeInfoUrlcurrentVersion 的值,并且确保服务器返回的 JSON 格式与代码中的解析逻辑匹配。此外,对于打开应用商店的部分,你需要根据具体的应用商店 URL 格式进行调整。

回到顶部