升级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