升级sdk功能说明
用于 第三方应用实现应用内升级的功能,自助上传升级包,根据业务需求自定义升级策略。
升级sdk是被动触发机制,由接入方根据产品需求在需要检查升级时,调用升级sdk提供的接口触发升级检查,常见的触发场景包括:打开app时触发,app内单独的检查新版入口触发等,建议打开app时即触发一次升级检查,以便更好支持强制升级策略。
支持 升级样式配置、升级方式配置(推荐、强制、静默)、策略下发条件配置(灰度策略)、策略启动和停止条件配置
可配置项:
【1】弹窗内容&样式配置
客户端弹窗样式 【系统样式&自定义样式】
【2】升级方式:推荐、强制、静默
•推荐升级:弹窗可取消/状态栏下载进度条
•强制升级:弹窗只能确认/中间下载进度条
•静默升级:先下载后弹窗/无下载进度条
【3】策略下发条件:
• 版本范围:1-1000,1005,1500-1600
• 灰度范围:50%的设备下发升级
• 指定设备:指定的设备标识(android)
【4】 策略启动条件:时间条件
【5】策略停止条件:时间条件
客户端接入
客户端接口人: 倪梦经nimengjing@wifi.com
配置AndroidManifest.xml
必须完成 基本接入步骤(必接) 相应的配置项,除此之外还需要配置
<!-- wkupgrade -->
<uses-permission android:name="android.permission.WAKE_LOCK" /><!-- 后台下载需要 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /><!-- 适配Android8.0需要加此权限 -->
<activity android:name="com.lantern.sdk.upgrade.ui.AlertActivity"
android:launchMode="singleTop"
android:theme="@android:style/Theme.DeviceDefault.Dialog.NoActionBar"/>
<activity android:name="com.lantern.sdk.upgrade.ui.DownloadAct"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity android:name="com.lantern.sdk.upgrade.ui.ProgressAct"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="com.lantern.sdk.upgrade.ui.WarningAct"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<service android:name="com.lantern.dm.task.DownloadService" android:exported="false" />
<provider
android:name="com.lantern.dm.task.DownloadProvider"
android:authorities="应用程序包名"
android:exported="false" />
<provider
android:name="com.lantern.sdk.upgrade.openapi.DownloadFileProvider"
android:authorities="应用程序包名.openapi.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/wk_dm_file_paths" />
</provider>
…
</application>
</manifest>
导入资源文件
将res-upgrade.zip解压后合并到App工程目录下的res目录中
客户端代码接入
发起版本更新检查(必须完成“基本接入步骤(必接)”才能进行下面升级功能接入) WKUpgrade.checkUpgrade();//发起检查 建议在APP初始化的时候检查更新,例如: public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
//必须先初始化all-in-one SDK
WKConfig.init(this, APP_ID, AES_KEY, AES_IV, MD5_KEY, CHANNEL);
......
WKUpgrade.checkUpgrade();
}
}
更多接口说明
升级sdk所有接口均在com.lantern.sdk.upgrade.openapi.WKUpgrade入口类中 /* @param withProgress true:检查新版本过程中带有progressDialog,适合用户手动检查调用 false:异步检查,适合后台 自动发起检查 / public static void checkUpgrade(boolean withProgress)
/** * @param 等同于checkUpgrade(false) */
public static void checkUpgrade()
/** * @param checkPoint 触发点,对应后台配置的触发点 * @param downAnyNetType true移动数据网络直接发起下载,false移动网络发起下载前询问用户 * @param withProgress 参见checkUpgrade(boolean withProgress) */
public static void checkUpgrade(String checkPoint, boolean downAnyNetType, boolean withProgress)
/** * 获取升级的版本信息,UpgradeInfo.hasNewVersion字段为true,即有新版本,否则没有 * @return */
public static UpgradeInfo getUpgradeInfo()
升级过程中业务状态监测
/** * 添加升级过程中的各种状态监测。 * @param listener */
public synchronized static void registUpgradeStateListener(UpgradeStateListener listener)
//UpgradeStateListener包含如下信息回执
/** * 升级对话框展示 */
public void onUpgradeDialogShow()
/** * 升级对话框消失 */
public void onUpgradeDialogDismiss(){}
/** * 普通升级对话框的取消按钮被点击 */
public void onCancelClick(){}
/** * 普通升级对话框的确认按钮被点击 */
public void onConfirmClick(){}
/** * 强制升级对话框的确认按钮被点击 */
public void onForceConfirmClick(){}
/** * 返回升级信息,有无新版本都返回该信息 * @param info */
public void onCheckFinish(UpgradeInfo info) {}
自定义弹框
【1】发起检查 传type为1,表示为自定义弹框
WKUpgrade.checkUpgrade(1);
【2】注册升级过程中监听:
WKUpgrade.registUpgradeStateListener(new
UpgradeStateListener(){
@Override
public void onCancelClick() {
super.onCancelClick();
Log.d("chenchao", "onCancelClick555555");
}
@Override
public void onConfirmClick() {
// TODO Auto-generated method stub
super.onConfirmClick();
Log.d("chenchao", "onConfirmClick44444444");
WKUpgrade.startDownload(info);
}
@Override
public void onForceConfirmClick() {
// TODO Auto-generated method stub
super.onForceConfirmClick();
Log.d("chenchao", "onForceConfirmClick333333");
WKUpgrade.startDownload(info);
}
@Override
public void onUpgradeDialogDismiss() {
// TODO Auto-generated method stub
super.onUpgradeDialogDismiss();
}
@Override
public void onUpgradeDialogShow() {
// TODO Auto-generated method stub
super.onUpgradeDialogShow();
}
@Override
public void onCheckFinish(UpgradeInfo arg0) {
super.onCheckFinish(arg0);
// TODO Auto-generated method stub 根据返回的UpgradeInfo 信息是否需要升级,完成自定义升级对话等操作
}
);
【3】注销升级过程中监听:
@Override
protected void onDestroy() {
WKUpgrade.unRegistUpgradeStateListener();
super.onDestroy();
}
【4】发起apk文件下载,info 为监听升级过程onCheckFinish(UpgradeInfo arg0)返回的信息
WKUpgrade.startDownload(info);
【5】UpgradeInfo返回字段说明
/**
* 是否有新版本,有了新版本,其属性才有值
*/
public boolean hasNewVersion = false;
/**
* 发起检查时传入的checkPoint,默认是init
*/
public String checkPoint;
/**
* 新版本的apk下载地址
*/
public String downloadUrl;
/**
* 新版本apk文件的MD5
*/
public String apkMD5;
/**
* 新版本apk文件大小
*/
public long apkSize;
/**
* 新版本的versionName
*/
public String versionName;
/**
* 新版本版的versionCode
*/
public int versionCode;
/**
* 服务端配置的弹框标题
*/
public String alertTitle;
/**
* 服务端配置的弹框信息,即更新信息
*/
public String alertMessage;
/**
* 服务端配置的弹框取消按钮文案
*/
public String cancelString;
/**
* 服务端配置的弹框确认按钮文案
*/
public String confirmString;
/**
* 是否是强制升级
*/
public boolean isForceUpgrade = false;
Buidler.java设置调试方法
/* 设置为测试环境 @param debuggable true请求测试环境配置,否则生产环境 默认不调用为生产环境 */ public static void setDebuggable(boolean debuggable)
/* 开启或关闭sdk日志输出 @param isEnable true输出日志,否则不输出,默认为不输出 / public static void setLogEnable(boolean isEnable)
后台配置说明
服务端对接人: 陈伟雄 chenweixiong@wifi.com
访问http://admin-open.51y5.net 进入管理地址并登录(使用掌门集团办公域账号登录即可)。
后台管理界面释义
更新说明
升级sdk为适配Android6.0及以上版本,特更新如下:
1,增加动态获取权限WRITE_EXTERNAL_STORAGE。
2,增加通过fileprovider来安装apk。
代码改动:
1,AndroidManifest.xml中增加以下配置:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /><!-- 适配Android8.0需要加此权限 -->
<provider
android:name="com.lantern.sdk.upgrade.openapi.DownloadFileProvider"
android:authorities="应用程序包名.openapi.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/wk_dm_file_paths" />
</provider>
2,资源文件增加: xml/wk_dm_file_paths