init 1.0
{
"versionCode":4, //新版本的versionCode,int型
"versionName":"1.12", //新版本的versionName,String型
"url":"http://contoso.com/app.apk", //APK下载地址,String型
"msg":"Bug修复", //更新内容,String型
"md5":"D23788B6A1F95C8B6F7E442D6CA7536C", //32位MD5值,String型
"size":17962350 //大小(字节),int型
}
//注册事件
EventBusUtils.register(this);
final IUpdateApi updateApi = new IUpdateApi
.Builder()
.setDebugMode(false) //是否显示调试信息(可选,默认:false)
//.setUpdateBean(updateBean) //设置通过其他途径得到的IUpdateBean(2选1)
.setJsonUrl("http://192.168.8.103:8080/a/a.xml") //JSON文件的URL(2选1)
.setShowDialogIfWifi(true) //设置在WiFi下直接弹出AlertDialog而不使用Notification(可选,默认:false)
.setDownloadText("立即下载") //可选,默认为左侧所示的文本
.setInstallText("立即安装(已下载)")
.setLaterText("以后再说")
.setHintText("版本更新")
.setDownloadingText("正在下载")
.setIconResId(R.mipmap.ic_launcher) //设置在通知栏显示的通知图标资源ID(可选,默认为应用图标)
.build();
if (IUpdateUtils.isConnected(activity)) {
updateApi.update(activity);
} else {
EventBusUtils.post(new UpdateEvent(2, IConstants.notNet));
}
适用于 App 入口的自动检查更新。默认策略下:
1.若用户选择“以后再说”或者划掉了通知栏的更新提示,则当天对该版本不再提示更新,防止当天每次打开应用时都提示导致用户不胜其烦;
2.在任何网络环境下,均推送一条通知栏更新提示,点击通知后弹出对话框,防止直接弹框带来不好的用户体验。
可调用 IUpdateApi.Builder.setShowDialogIfWifi(true) 设置在 WiFi 下直接弹出更新提示框 (AlertDialog) 而不使用 Notification 的形式。
if (IUpdateUtils.isConnected(activity)) {
updateApi.forceUpdate(activity);
} else {
EventBusUtils.post(new UpdateEvent(2, IConstants.notNet));
}
适用于应用“设置”页面的手动检查更新。此方法无视上面的 2 条默认策略,如果有更新,总是对用户进行提示,且总是使用提示框 (AlertDialog) 的形式。
IUpdateApi.Builder.setUpdateBean(IUpdateApi updateBean);
可使用第三方推送服务的自定义消息/透传功能,接收到服务端推送过来的JSON(String)后,解析成一个IUpdateBean,传入上述方法,即可使用推送带过来的JSON进行更新提示。
注意不是普通消息,这样会直接在通知栏上显示内容,不会进到自定义的代码处理块。
//订阅事件
@Subscribe
public void onUpdateEvent(UpdateEvent event) {
Log.e("aaaaaaaa", event.toString());
switch (event.flg) {
case 1:
//success
boolean flg=event.needUpdate;
if (flg) {
//需要更新
} else {
//最新版本
}
Log.e("aaaaaaaaaaaa","是否需要更新-->"+flg);
break;
case 2:
//fail
switch (event.code) {
case IConstants.notNet:
Log.e("aaaaaaaaaaaa","没有网络");
break;
case IConstants.requestError:
Log.e("aaaaaaaaaaaa","请求失败");
break;
case IConstants.jsonError:
Log.e("aaaaaaaaaaaa","json配置异常");
break;
case IConstants.md5Error:
Log.e("aaaaaaaaaaaa","MD5加密异常");
break;
case IConstants.downloadError:
Log.e("aaaaaaaaaaaa","下载失败");
break;
}
break;
}
}