公司項目選擇了umeng的更新功能和,統計插件,而由于版本的管理,使得需要針對某些版本進行強制更新。比如上個版本出現了重大問題,必須進行版本更新才能修複,産品架構有了重大調整,資料結構發生了變化導緻原先的app無法解析等等情況。但是查過umeng的産品文檔, 點選跳轉位址為
:
坑爹的umeng竟然沒有強制更新功能,在目前的方法中無法實作強制更新。想想都開始打算做一個下載下傳接口了,自己實作強制更新了。。。
再查了次umeng的替代方案,發現有一個這樣方式,通過在背景設定線上參數,然後在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的東西現在體驗性不友好啊。