公司項目選擇了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的東西現在體驗性不友好啊。