友盟强制更新

简介: 公司项目选择了umeng的更新功能和,统计插件,而由于版本的管理,使得需要针对某些版本进行强制更新。比如上个版本出现了重大问题,必须进行版本升级才能修复,产品架构有了重大调整,数据结构发生了变化导致原先的app无法解析等等情况。

     公司项目选择了umeng的更新功能和,统计插件,而由于版本的管理,使得需要针对某些版本进行强制更新。比如上个版本出现了重大问题,必须进行版本升级才能修复,产品架构有了重大调整,数据结构发生了变化导致原先的app无法解析等等情况。但是查过umeng的产品文档,点击跳转地址为

坑爹的umeng竟然没有强制更新功能,在目前的方法中无法实现强制更新。想想都开始打算做一个下载接口了,自己实现强制更新了。。。

    再查了次umeng的替代方案,发现有一个这样方式,通过在后台设置在线参数,然后在app中对在线参数进行处理,将升级对话框中响应事件设置监听器,完成强制更新的功能。

首先看下后台设置在线参数地址:点击跳转

 

 

然后在app中嵌入一下代码,参考

 1  UmengUpdateAgent.setUpdateOnlyWifi(false);
 2         String upgrade_mode = MobclickAgent.getConfigParams(this, "upgrade_mode");
 3  
 4         if(TextUtils.isEmpty(upgrade_mode)){
 5             return;
 6         }
 7         String[] upgrade_mode_array = upgrade_mode.split(";");
 8         UmengUpdateAgent.setUpdateOnlyWifi(false);
 9         UmengUpdateAgent.update(MainActivity.this);
10         UmengUpdateAgent.forceUpdate(MainActivity.this);//这行如果是强制更新就一定加上
11         for(String mode:upgrade_mode_array){
12             String versionName = ((MyApplication)getApplication()).getVersionName();
13             versionName = versionName + "f";
14             if(mode.equals(versionName)){
15                 //进入强制更新
16                 UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
17 
18                     @Override
19                     public void onUpdateReturned(int updateStatus, UpdateResponse updateResponse) {
20                         
21                     }
22                 });
23                 UmengUpdateAgent.setDialogListener(new UmengDialogButtonListener() {
24                     @Override
25                     public void onClick(int status) {
26 
27                         switch (status) {
28                             case UpdateStatus.Update:
29 
30                                 break;
31                             default:
32                                 //退出应用
33                                 MyApplication.base_logs.shortToast(getString(R.string.force_update_toast_string));
34                                 ((MyApplication) getApplication()).AppExit(MainActivity.this);
35                         }
36                     }
37                 });
38                 break;
39             }
40         }

这里

UmengUpdateAgent.forceUpdate(MainActivity.this); 这行很重要,不加上这条,看看界面如何:

这里可以选择忽略改版,然后即使代码规定点击以后再说,也不会退出应用程序。
反过来加上这句代码看看界面如何:


这里没有忽略改版,然后点击以后再说,就会退出应用程序。
再次吐槽umeng的东西现在体验性不友好啊。


 
目录
相关文章
|
IDE 开发工具 Android开发
如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android
如何在没有 USB 数据线的情况下使用 Android Studio 在手机中安装 Android
296 1
|
5月前
|
人工智能 自然语言处理 搜索推荐
Manus爆火,我发现平替开源项目OpenManus带你玩转AI智能体开发,无需邀请码!
在AI技术日新月异的今天,OpenManus像一把打开智能体开发大门的万能钥匙,让每个人都能轻松构建自己的AI助手!
251 0
|
XML 编解码 算法
Android开发音效中录制WAV音频和录制MP3音频的讲解及实战(超详细 附源码)
Android开发音效中录制WAV音频和录制MP3音频的讲解及实战(超详细 附源码)
492 0
|
11月前
|
JavaScript 调度 数据库
深入浅出:Node.js中的异步编程与事件循环
【9月更文挑战第30天】在Node.js的世界里,理解异步编程和事件循环是掌握其核心的关键。本文将通过浅显易懂的语言和实际代码示例,带你探索Node.js如何处理并发请求,以及它是如何在幕后巧妙地调度任务的。我们将一起了解事件循环的各个阶段,并学会如何编写高效的异步代码,让你的应用程序运行得更加流畅。
156 10
|
关系型数据库 MySQL PHP
fastadmin的详细安装过程
fastadmin的详细安装过程
853 0
fastadmin的详细安装过程
|
SQL 缓存 关系型数据库
Mysql跨库操作
Mysql跨库操作
372 0
|
Web App开发 移动开发 JavaScript
通过H5(浏览器/WebView/其他)唤起本地app
通过H5(浏览器/WebView/其他)唤起本地app
鸿蒙应用更新跳转到应用市场
鸿蒙应用更新跳转到应用市场
260 0
|
人工智能 小程序 前端开发
【uniapp小程序】uploadFile文件上传
上节中我们讲到小程序的request请求,掌握了基本的网络请求方式,这节我们通过小程序的uploadFile接口能力完成对小程序上传操作(uni.uploadFile,后端php接口),通过这一节你可以学习到php的上传接口的写法,以及如何配合前端完成一个小程序上传操作✨✨欢迎订阅本专栏或者关注我,大家一起努力每天一题算法题✨✨❤️❤️❤️ 最后,希望我的这篇文章能对你的有所帮助!愿自己还有你在未来的日子,保持学习,保持进步,保持热爱,奔赴山海!❤️❤️❤️。
1275 0
【uniapp小程序】uploadFile文件上传
|
存储 监控
日志服务SLS全新发布按写入数据量计费模式节省计划
按写入数据量计费模式节省计划是一种“比按量计费更划算,比包年包月更灵活”的全新计费模式。支持0预付、全预付,您可以通过承诺在一定期限内消费一定的金额,获取比按量计费低至 50% 的价格。
487 0