更新记录

1.1.1(2023-06-29)

  • 优化静态方法forUpdate相关入参,下个版本支持DIY图片和按钮色彩
  • 修复上一版本XXPermissions官方转移导致无法授权更新问题
  • 其他优化

1.1.0(2023-06-07)

  • 新增主动传入升级配置弹窗提示forUpdate方法,无需注册云平台也可唤醒弹窗
  • 修复上一版本versionCodeversionName读取颠倒导致无法更新问题
  • 修复强制下载主动下载禁止暂停
  • 修复下载过程中暂停断点续传失败问题
  • 补充取消更新文件删除临时文件问题
  • 补充新版SDk内utsplugin-release.aar自带XXPermissions导致打包冲突的问题
  • 其他优化

1.0.3(2023-05-25)

  • 新增简约升级弹窗主题
  • 补充暂不更新24小时后再检查
  • 补充强制安装无需点击直接下载
  • 修复下载按钮请求授权回调问题
  • 更改存储路径和解压包配置路径
  • 支持高版本回退强制下载安装
查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


Betauper Upgrader 应用升级中心

  • 一行代码,接入高效的应用升级中心

概述

统一管理App及App在AndroidiOS平台上App安装包wgt资源包的发布升级

实现应用启动速度FPS流量消耗应用使用时长等性能数据监控

下载统计区域下载统计 了解应用覆盖范围

Betauper 应用平台请访问 Betauper Cloud

摘要

  • 一键式检查更新,同时支持整包升级与wgt资源包更新
  • 好看、实用、可自定义的客户端提示框
  • 多样式升级弹窗,支持自定义布局样式和弹窗主图
  • 统一管理平台,多应用升级可控
  • 云端存储不占用服务器资源
  • 全国CDN分发,快速下载不等待

展示

  • 应用信息页
  • 应用升级窗
  • 异常监控
  • 应用下载页

使用指南

本篇我将教会大家如何使用Unapp 开发一款简易应用。然后使用Betauper 作升级中心进行应用版本升级控制。

  • uniapp 项目创建
  • Betauper 项目创建
  • 插件测试
  • 正式打包

一、创建uni-app项目

创建应用的前提是注册了dcloud的账号服务,并且安装好提供的开发工具HbuildX。

1.打开HbuilderX,点击左侧栏创建应用

image.png

2.在弹出窗口内选择 uni-app 填写基本信息和目录地址,点击右下角 立即创建

image.png

3.创建得到相应的目录结构,如下图:

image.png

二、Betauper 项目创建

创建 Betauper 项目的前提是已注册好 Betauper Cloud 账号并完成邮件激活

1.使用uni-app云插件

2.在HbuilderX内配置使用原生插件

3.打包uni-app项目的自定义基座,这里要注意 包名称 将会是最终项目的。

我们选择运行 -> 运行到模拟器 -> 制作自定义调试基座(或者发行->云打包)打开如下弹窗

4.等待云打包完成,我们会得到如下目录的文件

5.将该文件到 Betauper 控制台进行上传,即可创建应用

三、插件测试

通过上面两个步骤,我们已经拥有了基础的配置信息,我们在 Betauper Cloud 得到了对应应用的 Key。 接下来就是使用uni-app原生插件来实现我们版本升级的控制

1、在应用App.vue文件下,使用且配置我们的升级插件

# 在 onLaunch 方法下写入如下代码
// #ifdef APP-PLUS
const BetauperUpgrader = uni.requireNativePlugin('Betauper-Upgrader');
BetauperUpgrader.init("你应用在Betauper 的key", {
    debug: false
}, res => {
    console.log('[Betauper] init success !')
    // 执行检查
    BetauperUpgrader.checkUpdate();
}, err => {
    console.error('[Betauper] init fail:', err)
    uni.showModal({
        title: '初始化失败',
        content: err.msg,
        icon: 'loading'
    })
})
// #endif

2.运行到手机或者模拟器

启动成功,会弹出检查结果:当前已是最新版本,这就表明我们已经正常接入到了升级中心!

  1. 后续的升级操作就可以直接更改打包版本号,打包成 apk/wgt 形式的文件在 Betauper 升级控制台内上传,并选择 设置为当前版本,打开应用就会弹出升级提示,如下图:

image.png

image.png

这里要注意的是:

  • 进行配置文件更新的时候,必须选择 apk 完成包更新重新安装应用才会生效
  • 常规的页面结构或者样式更改可以直接选择 wgt 更新包更新

四、正式打包

到此,我们已经完成了升级中心的接入,后续我们的正式发布也按此次流程所示!

创建项目 -> 使用插件 -> 自定义基座 -> 上传应用包

五、插件函数

1. 初始化方法 .init(key, options, callback, callback)
  1. key 是在 Betauper 平台上的应用 key, 错误输入会无法进行初始化和升级操作

  2. options 是拓展配置,目前只支持 debug 属性,填写true在开发下会有错误提示,其他则错误不会提示

  3. callback 是初始化的回调, 分别是 成功失败 的回调,失败回调会携带错误信息

2. 检查更新函数 .checkUpdate()

执行升级检查的方法,在一次 init 初始化之后,在其他页面引入原生组件也可直接操作升级检查,取消更新后24小时内不会再弹出

// 引入原生插件
const BetauperUpgrader = uni.requireNativePlugin('Betauper-Upgrader');

methods: {
    checkUpdate() {
        // todo 执行升级检查
        BetauperUpgrader.checkUpdate();
    }
}
3. 强制检查更新函数 .checkUpdateForce()

执行升级检查的方法,在一次 init 初始化之后,这个方法取消更新后再次点击不会做时效限制

// 引入原生插件
const BetauperUpgrader = uni.requireNativePlugin('Betauper-Upgrader');

methods: {
    checkUpdate() {
        // todo 执行升级检查
        BetauperUpgrader.checkUpdateForce();
    }
}
4. 主动更新,非平台Key方式 .forUpdate()

执行这个方法会弹出升级框,所以在执行之前请您自行确保需要弹窗升级,得到如下配置信息(配置信息全必填) layout 参数支持一下几种

  • fragment_update_official
  • fragment_update_rouge
  • fragment_update_deep
  • fragment_update_sample
// 引入原生插件
const BetauperUpgrader = uni.requireNativePlugin('Betauper-Upgrader');

methods: {
    checkUpdate() {
        // todo 执行升级检查,后续增加对按钮、头图等自定义设置
        BetauperUpgrader.forUpdate({
          "name": "BetauperUpgrader",
          "icon": "https://www.betauper.com/icon.png",
          "platform": "android",
          "layout": "fragment_update_official",
          "version": "5.6.0",
          "versionCode": "560",
          "updateDesc": "升级描述\n1.更新了xxx\n2.更新了xxx\n3.更新了xxx",
          "downloadUrl": "https://www.betauper.com/apk/demo.apk",
          "diyLayout": true,
          "layoutFrame": {
            "topImage": "https://www.betauper.com/logo.png",
            "cancelButton": {
              "btnText": "暂不更新",
              "btnColor": "#666666",
              "btnBackgroundColor": "#fcfcfc",
            },
            "confirmButton": {
              "btnText": "立即更新",
              "btnColor": "#FC4235",
              "btnBackgroundColor": "#FFFFFF",
            }
          }
        });
    }
}

后续

我尽可能话多一点时间设计更多的弹窗主题,丰富我们的弹窗效果,提供更优的升级体验

联系QQ:702154416
交流群:683869092
官网:Betauper

期待与你更好发展

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.READ_PHONE_STATE android.permission.READ_PRIVILEGED_PHONE_STATE android.permission.INTERNET android.permission.REQUEST_INSTALL_PACKAGES android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_EXTERNAL_STORAGE android.permission.MANAGE_EXTERNAL_STORAGE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件采集手机运行状态(CPU/Memory)、APP启动时长、APP使用时长、APP错误信息以及网络使用情况。 采集上述信息用于统计APP状态和错误情况,为开发者提供明细的应用运行概况。 数据采集隐私协议:https://www.betauper.com/about/privacy

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问