Flutter - 应用内更新

Language: English | 中文

simple_update

最简单的APP更新方式(下载并触发安装),支持所有平台。

默认情况下,会从avenge.app下载最新版本的APP,这是一个简单的APP版本管理系统,欢迎试用_

你也可以设置自己的服务器来发布APP新版本。

开始

  1. 注册账号

    https://avenge.app/register

  2. 创建应用与版本

    https://avenge.app/developer/resources/apps/new

    https://avenge.app/developer/resources/versions/new

  3. 安装

    dependencies:
        simple_update: ^2.0.7
    
  4. 用法

    这是一个Android的例子

    import 'package:ota_update/ota_update.dart';
    import 'package:simple_update/simple_update.dart' as simple;
    import 'package:package_info/package_info.dart';
    
    code...
    RaisedButton(
       onPressed: () async {
         var updater = new simple.SimpleUpdate(
             appId: 1,
             appKey: 'g4rehwe8fq4qe9rgh4q123');
         var info = await PackageInfo.fromPlatform();
         var res = await updater.checkUpdate(
             platform: simple.Platform.Android,
             info: simple.Info(
                 appName: info.appName,
                 version: info.version,
                 buildNumber: int.parse(info.buildNumber)));
         if (res == true) {
           var re = await showDialog<bool>(
             context: context,
             builder: (context) => AlertDialog(
               title: Text('New version'),
               content: Text('Install the new version?'),
               actions: [
                 FlatButton(
                     onPressed: () => Navigator.pop(context),
                     child: Text('Cancel')),
                 FlatButton(
                     onPressed: () => Navigator.pop(context, true),
                     child: Text('Yes')),
               ],
             ),
           );
           if (re == true) {
             var r = await updater.update(
                 platform: simple.Platform.Android,
                 downloader: (info, version) {
                   return OtaUpdate()
                       .execute(
                     version.src,
                     destinationFilename:
                         '${info.appName}_${version.name}+${version.number}.apk',
                     sha256checksum: version.sha256,
                   )
                       .transform(StreamTransformer<OtaEvent,
                               simple.Event>.fromHandlers(
                           handleData: (event, sink) {
                     sink.add(simple.Event(
                         status: simple.Status.values[event.status.index],
                         value: event.value));
                   }));
                 });
             if (r is Stream<simple.Event>) {
               r.listen((event) {
                 switch (event.status) {
                   case simple.Status.DOWNLOADING:
                     print('downloading %${event.value}');
                     break;
                   case simple.Status.INSTALLING:
                     print('installing');
                     break;
                   case simple.Status.ALREADY_RUNNING_ERROR:
                     print('download is already running');
                     break;
                   case simple.Status.PERMISSION_NOT_GRANTED_ERROR:
                     print(
                         'could not continue because of missing permissions');
                     break;
                   case simple.Status.INTERNAL_ERROR:
                   case simple.Status.DOWNLOAD_ERROR:
                   case simple.Status.CHECKSUM_ERROR:
                     print('error ${event.value}');
                 }
               });
             }
           }
         } else {
           print('no latest version');
         }
       },
       child: Text('Update'),
    )
    code...
    

构建版本发布服务器

[SimpleUpdate.apiPrefix] 的默认值是 ‘https://avenge.app/api’, 你可以指定自己的服务器来发布APP新版本.

var updater = SimpleUpdate(apiPrefix: 'your own server');

当获取新版本时,会向服务器发送一个get请求,携带如下参数

https://avenge.app/api/latest?app_id=456&app_key=abc123&platform=0

platform参数: 0:android 1:ios 2:fuchsia 3:linux 4:windows 5:macOS

然后,服务器会返回json

{
  "code": 0,
  "message": "success",
  "data": {
   "id": 123,
   "app_id": 456,
   "platform": 0,
   "name": "1.0.1",
   "number": 24,
   "src": "file url",
   "sha256": "sha256 of file",
   "created_at": "2020-07-29 12:15:46"
  }
}

如果 code 值是 0 ,意味着提交成功。

如果发生了错误,将会是:

{
  "code": -1,
  "message": "something wrong ..."
}

全部项目

插件描述
simple_log最简单的日志收集方式,支持所有平台
simple_update最简单的应用更新方式,支持所有平台

Avenge应用商店

avenge.app

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter 提供了一种方便的方式来实现应用更新,使得应用程序在用户不需要去应用商店下载新版本时,可以直接在应用内部更新。 实现应用更新的一种常见方式是使用 "flutter_updater" 插件。该插件允许开发者将应用的新版本发布在服务器上,并在应用中自动检查新版本的可用性。 以下是实现应用更新的大致步骤: 1. 集成 "flutter_updater" 插件:在项目的 `pubspec.yaml` 文件中添加 "flutter_updater" 的依赖。然后执行 `flutter packages get` 命令来下载插件。 2. 在应用启动时检查更新:在应用的入口函数中调用 `checkVersion()` 方法,该方法会异步检查服务器上是否有新版本可用。 3. 解析版本信息:根据服务器返回的版本信息,与当前应用的版本进行比较。如果有新版本可用,则显示更新提示。 4. 下载并安装新版本:用户点击更新提示后,使用 "flutter_updater" 插件中的下载和安装方法来下载新版本的应用安装包,并自动安装新版本。 5. 强制用户更新:为了确保用户不会继续使用旧版本,可以在新版本安装完成后,使用 "flutter_updater" 插件中的 `launchApp()` 方法来重启应用。 需要注意的是,为了保证用户数据的安全性和应用的稳定性,更新流程应该经过充分的测试和验证。另外,为了提高用户体验,可以在应用设置中提供选项,允许用户自定义更新检查的频率。 总结起来,Flutter 提供了 "flutter_updater" 插件来实现应用更新,使得用户可以在应用内部直接获取和安装新版本。这为开发者和用户都带来了极大的便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值