准备知识
蒲公英的 iOS SDK 和 Android SDK,都支持自动版本更新的功能,本文说明了蒲公英 SDK 自动更新的机制。
阅读本文,需要先明白 App 的版本号机制,以及蒲公英的自增 Build 版本号。建议大家首先阅读 显示正确的 Build 版本号 ,来明确 App 本身的版本号、蒲公英的自增 Build 版本号的基础概念。
版本更新原理
蒲公英 SDK 的更新机制,根据不同的版本有两种不同的机制:
一、新版本更新机制(Android 2.8.3以后,iOS 2.8.9以后)
新版本蒲公英 SDK 的更新,是根据 本地 App 的 Version和App 本身的 Build来判定更新的。这两个版本号中,任何一个检查到线上版本大于本地版本,都会提示更新。
第一步:
如果本地 App 的 Version小于蒲公英上的 Version,则提示更新。(注意:iOS App 的本地版本号是指 CFBundleShortVersionString, Android 是指 VersionName)
第二步:
如果本地 App 的 Build小于蒲公英上的 Build,则提示更新。(注意:iOS App 的本地版本号是指 CFBundleVersion,Android 是指 VersionCode)
在这两步中,任何一步如果判断出有新版本,都会提示更新。否则不会提示。
二、旧版本更新机制(Android 2.8.3以前,iOS 2.8.9以前)
旧版本蒲公英 SDK 的更新,是根据 App 本身的 Version和蒲公英自增 Build 版本号来判定更新的。这两个版本号中,任何一个检查到线上版本大于本地版本,都会提示更新。
具体判定顺序是:
第一步:
如果本地 App 本身的 Version小于蒲公英上的 Version,则提示更新。(注意:iOS App 的本地版本号是指 CFBundleShortVersionString, Android 是指 VersionCode)
第二步:
如果本地 App 的蒲公英自增 Build 版本号小于蒲公英上版本的自增 Build 号,则提示更新。
在这两步中,任何一步如果判断出有新版本,都会提示更新。否则不会提示。
旧版本其他注意事项
Android SDKV3.0.4 (2019.02.27)版本更新强制更新功能。如若SDK设置中设置强制更新失效,请先检查SDK版本。IOS SDK暂不支持强制更新功能。
因为蒲公英的自增 Build 版本号 是不写入 App 内的。所以,对于手机上首次安装 App 来说,无论安装的是蒲公英上的哪个版本,SDK 都会认为该 App 本地的蒲公英自增 Build 版本号是当前蒲公英上最新版本的自增 Build 版本号。
因此,在 SDK 第一次启动时,会检查本地是否存在 蒲公英自增 Build 版本号,如果不存在,会调用蒲公英接口将最新的蒲公英自增 Build 版本号写入本地文件中,以便下次用于版本更新的判断。
另外,需要注意的是,对于 iOS App,如果需要提交苹果 App Store,建议将自动更新功能去掉(相关代码和 SDK 也需要去掉),因为目前苹果并不允许含有自动版本更新功能的 App 上架 App Store。