后端兼容app新旧版本的功能

在开发中,有时需要对 app的新版本和旧版本,做不同的处理。可以根据版本号判断。

新版本app交互有变化时,同一个接口在 不同版本可能要返回不同的数据。

如果不区分新旧版本,有可能会导致旧版本app 不可用。

比如 1.2.1 的旧版本有一个功能是跳转 微信,到了 3.5.1 版本修改了 app的交互,变成跳转 微信小程序,如果不区分处理,旧版本就没法使用了。


示例:

public class VersionUtil {

    private static final String SPLIT_CHAR = "\\.";
    private static final String SPLIT = ".";


    /**
     * 检查版本
     * @param version    要检查的版本号,格式类似:3.5.1
     * @param oldVersion    旧版本号,格式类似:1.2.1,缺少的需补0.
     * @return 返回对应的数字
     */
    public static int checkVersion(String version, String oldVersion) {
        if (StringUtils.isBlank(version) || !version.contains(SPLIT)) {
            throw new IllegalArgumentException("请输入正确格式的版本号");
        }
        //点号做分隔符,需要做转义处理
        return checkVersion( version, oldVersion,  0,  1, SPLIT_CHAR);
    }

    /**
     * 检查版本
     * @param version    要检查的版本号,格式类似:3.5.1
     * @param oldVersion    旧版本号,格式类似:1.2.1,缺少的需补0.
     * @param oldVersionNum   旧版本号对应的数字
     * @param newVersionNum   新版本号对应的数字
     * @param splitChar  类似  "\\."
     * @return 返回对应的数字
     */
    public static int checkVersion(String version, String oldVersion, Integer oldVersionNum, Integer newVersionNum, String splitChar) {
        if (StringUtils.isBlank(version)  ) {
            throw new IllegalArgumentException("请输入正确格式的版本号");
        }
        if (StringUtils.isBlank(oldVersion)  ) {
            throw new IllegalArgumentException("请输入正确格式的旧版本号");
        }

        String[] versionArray = version.split(splitChar);
        String[] oldVersionArray = oldVersion.split(splitChar);

        if (versionArray.length >= 1 && Integer.parseInt(versionArray[0]) > Integer.parseInt(oldVersionArray[0])) {
            return newVersionNum;
        }
        if (versionArray.length >= 2  && Integer.parseInt(versionArray[0]) == Integer.parseInt(oldVersionArray[0])
                && Integer.parseInt(versionArray[1]) > Integer.parseInt(oldVersionArray[1])) {
            return newVersionNum;
        }
        if (versionArray.length >= 3  && Integer.parseInt(versionArray[0]) == Integer.parseInt(oldVersionArray[0])
                && Integer.parseInt(versionArray[1]) == Integer.parseInt(oldVersionArray[1])
                && Integer.parseInt(versionArray[2]) > Integer.parseInt(oldVersionArray[2])) {
            return newVersionNum;
        }
        return oldVersionNum;
    }


}

posted on 2024-08-20 23:06  乐之者v  阅读(2)  评论(0编辑  收藏  举报

导航