友盟强制更新

简介: 公司项目选择了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的东西现在体验性不友好啊。


 
目录
相关文章
|
数据可视化
需求不明确该怎么办?
需求不明确该怎么办?
1039 0
|
11月前
|
机器学习/深度学习 人工智能 编解码
AI 只用 60 秒就能生成 Logo,用 AI 生成 Logo 有什么优势和特点?
AI Logo生成工具测评:免费方案能否满足品牌需求? AI Logo生成工具凭借高效低价的特点,为初创企业和个人提供了便捷的选择。本文对比了7款主流免费AI Logo工具(如LogomasterAI、燕雀光年等),发现这些工具平均1分钟即可生成Logo,提供多种行业模板和编辑功能,部分甚至支持矢量格式输出。但在专业性方面,AI生成的Logo虽具备基础设计感,却可能缺乏独特性。值得注意的是,各工具版权政策差异较大,用户需仔细确认商用授权条款。建议预算有限的用户可先用AI生成基础方案,再结合专业建议进行优化,
549 0
|
数据可视化
YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件
YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件
427 5
|
存储 机器学习/深度学习 传感器
商业日志分析工具
【10月更文挑战第20天】
460 5
|
机器学习/深度学习 自然语言处理
【机器学习】如何进行中文命名实体识别?(面试回答)
中文命名实体识别的基本概念、分类、识别思想、实体标注方法以及常见的识别方法,包括基于规则、基于统计和基于深度学习的方法。
560 1
【机器学习】如何进行中文命名实体识别?(面试回答)
|
存储 缓存 编解码
计算机硬件学习教程
【7月更文挑战第26天】
981 2
|
自然语言处理 知识图谱
你了解SCQA模型吗?
你了解SCQA模型吗?
2146 0
你了解SCQA模型吗?
|
人工智能
一定要知道如何用ChatGPT编写标题, 快速提升公众号的爆款概率
一定要知道如何用ChatGPT编写标题, 快速提升公众号的爆款概率
|
消息中间件 存储 SQL
消息链路拆分最佳实践:钉钉审批异步链路重构【总结】
引入消息队列可以帮助我们解耦业务逻辑,提升性能,让主链路更加清晰。但是消息链路的代码腐化和一致性问题也给业务带来了很多困扰,本文阐述了钉钉审批消息链路重构的设计和解决方案。注:Metaq 是阿里 RocketMQ 消息队列的内网版本。
1256 3
消息链路拆分最佳实践:钉钉审批异步链路重构【总结】

热门文章

最新文章