Flutter应用更新检查插件app_update_checker的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter应用更新检查插件app_update_checker的使用

插件概述

app_update_checker 是一个用于帮助处理Flutter应用程序更新的插件。它旨在以更灵活的方式处理应用更新,修复问题并绕过 Upgrader 包中的一些限制。你可以自定义显示对话框、模态窗口或小卡片来激励或强制用户更新应用。该插件还支持旧版本的弃用、强制更新和回滚更新等功能。

设置方法

app_update_checker 提供了两种获取更新信息的方法:

  1. 从应用商店获取:这种方法较为简单,但灵活性较低,不支持许多功能。
  2. 从自定义更新配置文件获取:这种方法需要一些自定义,但可以在所有平台上使用,并且允许对更新过程进行完全控制和定制。目前,插件主要专注于第二种方法。

更新配置

以下是 app_update_checker 的完整配置API结构示例:

# 默认发布设置
release_settings:
  # 可选
  title:
    en: |-
      ## New version for ($appName)[https://example.com]
      ### Version $releaseVersion is available!
    es: La versión $releaseVersion está disponible!
    ru: Доступна новая версия!
  # 可选
  description: |-
    A new version of $appName is available!
    Version $releaseVersion is now available. You have a $appVersion
  # 可选,允许用户忽略此特定版本,直到有新版本可用
  can_ignore_release: true
  # 更新通知将重复显示给用户的间隔时间(小时)
  reminder_period_hours: 48
  # 发布后必须经过的时间,然后才会向所有用户显示更新通知
  release_delay_hours: 48
  # 早于此版本的版本将收到过时通知,但可以延迟更新
  deprecated_before_version: 0.3.7
  # 早于此版本的版本必须更新到最新版本,没有延迟更新的选项
  required_minimum_version: 0.1.0 

# 可选,基于平台和应用ID设置
stores:
  - name: googlePlay 
    url: https://example.com
  - name: appStore
    url: https://example.com
  - name: appGallery 
    url: https://example.com
  - name: ruStore 
    url: https://example.com
  - name: gitHub
    url: https://example.com
    platforms:
      - android
      - windows
      - macos
      - linux

releases:
  - version: 0.3.7 # 必填
    build_number: 21 # 可选,用于细化版本
    type: active # 可选,默认为active
    release_note: |-
      # Big update!
      [click](https://example.com) - full changelog.
      ### Short notes
      - Added bugs
      - Fixed features
    pub_date_utc: '2024-08-24 15:35:00' # 可选,用于延迟发布
    can_ignore_release: true # 可选,覆盖默认值
    reminder_period_hours: 48 # 可选,覆盖默认值
    required_minimum_version: 48 # 可选,覆盖默认值
    stores:
      - googlePlay
      - appStore
      - ruStore
      - name: github
        url: https://example.com
        platforms: 
          - android
          - ios
          - aurora
    
  - version: 0.3.8
    ref_version: 0.3.7 # 引用另一个版本,使用其所有参数
    release_note: Minor improvements
    is_super_ultra_mega_release: true # 自定义参数,可以从应用中访问

Shorebird集成

如果你使用 Shorebird 进行代码推送,app_update_checker 也可以处理并显示有关新补丁的信息,包括发布说明,并提供重启应用的功能。以下是 Shorebird 补丁配置的示例:

# 默认补丁设置
path_settings:
  title: The new patch is available!
  description: It is needed to fix errors in the app.

releases:
  - version: 1.3.7
    patches:
      - patch_number: 1 # 必填
        type: active # 可选,默认为active
        title: New patch for $appVersion
        patch_note: Critical fix
        build_number: 21 # 可选,用于细化版本
      - patch_number: 2
        ref_patch_number: 1 # 引用另一个补丁,使用其所有参数
        ref_version: 1.3.7 # 引用不同版本的补丁
        build_number: 23 # 可选,用于细化版本
    platforms:
      - android
      - ios

完整示例Demo

以下是一个完整的示例项目,展示了如何在Flutter应用中使用 app_update_checker 插件来检查和提示用户更新应用。

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

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

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('App Update Checker Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 检查更新
              final updateInfo = await AppUpdateChecker.checkForUpdate(
                configUrl: 'https://example.com/update_config.yaml', // 自定义更新配置文件URL
              );

              if (updateInfo != null && updateInfo.isUpdateAvailable) {
                // 显示更新提示对话框
                showDialog(
                  context: context,
                  builder: (context) => AlertDialog(
                    title: Text(updateInfo.title ?? 'New Update Available'),
                    content: Text(updateInfo.description ?? 'A new version of the app is available.'),
                    actions: [
                      TextButton(
                        onPressed: () {
                          Navigator.pop(context);
                        },
                        child: const Text('Later'),
                      ),
                      TextButton(
                        onPressed: () {
                          // 打开应用商店或下载链接
                          AppUpdateChecker.openStore();
                          Navigator.pop(context);
                        },
                        child: const Text('Update Now'),
                      ),
                    ],
                  ),
                );
              } else {
                // 没有可用更新
                ScaffoldMessenger.of(context).showSnackBar(
                  const SnackBar(content: Text('No updates available.')),
                );
              }
            },
            child: const Text('Check for Updates'),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用app_update_checker插件来检查应用更新的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  app_update_checker: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖项。

使用示例

以下是一个完整的示例,展示了如何使用app_update_checker插件来检查应用更新:

  1. 导入插件

在你的Dart文件中(例如main.dart),导入插件:

import 'package:app_update_checker/app_update_checker.dart';
import 'package:flutter/material.dart';
  1. 创建检查更新的函数

创建一个函数来检查应用更新:

Future<void> checkForUpdates() async {
  try {
    // 检查是否有更新
    AppUpdateInfo updateInfo = await AppUpdateChecker.checkForUpdate();

    if (updateInfo.updateAvailable) {
      // 更新可用
      String updateMessage = "新版本 ${updateInfo.version} 可用!";
      showDialog(
        context: context,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text("更新可用"),
            content: Text(updateMessage),
            actions: <Widget>[
              TextButton(
                onPressed: () {
                  // 打开应用市场
                  AppUpdateChecker.openAppStore(updateInfo.storeLink);
                },
                child: Text("下载更新"),
              ),
              TextButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: Text("稍后更新"),
              ),
            ],
          );
        },
      );
    } else {
      // 没有更新
      print("当前版本是最新版本");
    }
  } catch (e) {
    // 处理错误
    print("检查更新时出错: $e");
  }
}
  1. 在应用启动时调用检查更新的函数

例如,在MyApp类的initState方法中调用checkForUpdates函数:

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    // 在应用启动时检查更新
    checkForUpdates();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Text('Hello, Flutter!'),
      ),
    );
  }
}

注意事项

  1. 权限:确保你的应用具有访问网络的权限,因为检查更新通常需要从互联网获取数据。
  2. 平台配置:对于iOS和Android,你可能需要在各自的配置文件中进行一些设置,以便插件能够正确工作。
  3. 版本管理:确保你正确管理应用的版本号,以便插件能够正确比较当前版本和最新版本。

这样,你就可以在Flutter应用中使用app_update_checker插件来检查应用更新了。

回到顶部