功能说明:
进入关于界面,点击检测新版本,如果发现服务器上的版本比本地应用的版本高,就弹出升级提示,用户选择升级,就进入APP下载,在通知栏显示当前下载进度,下载完成后,用户点击通知栏,就可以完成应用安装。
这部分升级功能,相对于<<一个APP下载升级的Demo(通知栏实时更新下载进度)------(一)>>来说,添加了使用本地APP信息参数来传给服务器,再从服务器获取相应的信息参数,再进行下载升级
图解升级的过程:
按下MENU---关于:
图片一 图片二 图片三 图片四
图片一: 关于界面
图片二: 点击检测新版本,发现有新版本,弹出软件升级提示
图片三: 下载成功通知栏,提示点击安装
图片四: 点击安装
升级部分的源码路径:
com.kk.videoplayer.update
关键源码的说明:
AboutActivity.java: 关于界面
IsToUpdateThread.java: 判断是否提示升级的线程
UpdateService.java: 更新,下载,升级,安装的服务(核心文件)
UpdateUtil.java: 判断是否提示升级的帮助类
UpdateHelper.java museUI 官方论坛地址, museUI 新浪微博, museUI 腾讯微博
描述本地APP和服务器上的APP信息的帮助类:
ResponseResult.java: 描述服务器的返回信息
ResponseParams.java 描述服务器的返回信息
RequestAppInfoUtiol.java 描述发给服务器的请求信息
RequestAppInfo.java 描述发给服务器的请求信息
AppResult.java 应用结果实体类
HttpClientUtil.java HTTP工具类
GetServerAppInfo.java 获取服务器上APP的信息
AppUpdateServiceRequestTemplate.java 服务xml参数模板
AppUpdateServiceHandler.java xml读取类
MySharedPreferences.java xml文件,保存一些值
FileUtil.java 文件帮助类,这个主要是处理下载的APP存放的位置
应用升级统一协议规范说明:
服务器请求地址
服务器统一请求地址为:http://unionupdate.kkpush.net/UnionUpdateService
协议说明
在请求服务器时需要手机端把相应的参数作为HTTP请求的param传到服务器,相应的参数统一以XML的格式,具体形式如下:
1.请求参数协议
<Request>
<RequestType>App</RequestType>
<AppParams>
<OpType>getCurrentVersion</OpType>
<UserName>用户名,一般是imei</UserName>
<AppName>应用名称</AppName>
<PackageName>应用包名</PackageName>
<SystemVersion>系统版本号</SystemVersion>
<AppVersion>应用版本号</AppVersion>
<Paramater1>扩展参数</Paramater1>
<Paramater2>扩展参数</Paramater2>
<Paramater3>扩展参数</Paramater3>
</AppParams>
<OtherParams>其他参数</OtherParams>
</Request>
请求参数详细说明
字段名称 | 字段说明 | 其他 |
RequestType | 统一的请求行为 App:为应用服务的请求 | 唯一值,且大小写需一致 |
AppParams | 请求中的参数,以下保护相应的子节点 | |
OpType | 操作的类型 getCurrentVersion:请求应用最新版本 | getCurrentVersion:为固定值 |
UserName | 手机的IMEI号 | |
AppName | 请求获取最新版本的应用名称 | |
PackageName | 请求应用的包名称 | |
SystemVersion | 手机系统版本 | 通过程序获取手机系统版本 |
AppVersion | 请求应用的版本号 1.0.0.A015_ICS.S001p | | |_签名信息 | | | |_SDK版本 | |__版本编号 要符合应用统一命名规范: | 具体要求请参考《系统组软件开发规范》文档 |
Paramater1,Paramater2,Paramater3 | 扩展参数 | 功能扩展使用的保留字段 |
2.响应参数协议
<Response>
<ResponseCode>
返回码:0000成功,0001失败,0003服务器异常,0004参数错误
</ResponseCode>
<ResponseMessage>
返回消息
</ResponseMessage>
<ResponseResult>
<AppResult>
<AppVersion>应用版本号</AppVersion>
<AppVersionInfo>应用版本信息</AppVersionInfo>
<DownloadUrl>应用版本下载地址</DownloadUrl>
<Paramater1>扩展参数</Paramater1>
<Paramater2>扩展参数</Paramater2>
<Paramater3>扩展参数</Paramater3>
<AppResult>
</ResponseResult>
</Response>
响应参数详细说明:
字段名称 | 字段说明 | 其他 |
ResponseCode | 标示响应结果的相应码 | 0000成功,0001失败,0003服务器异常,0004参数错误 |
ResponseMessage | 响应的信息 | 需要处理的一些消息 |
AppResult | 响应的结果,包括详细的子节点 | |
AppVersion | 服务器当前最新的版本号 | |
AppVersionInfo | 服务器上最新版本号的描述信息 | |
DownloadUrl | 最新应用的下载路径 | |
Paramater1,Paramater2,Paramater3 | 扩展参数 |
例子说明
我们提供获取应用版本信息的demo为:AppUpdateDemo
1.请求获取应用的版本信息:AppUpdateDemoActivity.java中的143行:
param = AppUpdateServiceRequestTemplate.getAppCurrentVersionParams("","","","","");
参数分别为:
UserName:手机IMEI
AppName:应用名称
PackageName:应用包名
SystemVersion:手机系统版本号
AppVersion:应用的版本号
便可以成功请求服务器。
2.处理响应的结果,AppUpdateDemoActivity.java中的177行:
// 解析版本信息xml
if (responseParams == null)
{
sendError();
return;
}
//获取到正确的结果
if("0000".equals(responseParams.getResponseCode()))
{
AppResult appResult = responseParams.getResponseResult().getAppResult();
sendSuccess(appResult);
}
else
{
sendError();
}
3.修改请求服务器的地址:HttpClientUtil.java中的29行定义:
注:服务器的请求地址必须一致为:http://unionupdate.kkpush.net/UnionUpdateService
private String serviceUrl;//服务地址
源码下载:
http://download.csdn.net/detail/hfreeman2011/5267459