游戏在后台提交新版游戏时自动制作差分包,更新时用户只需下载 APK
文件中新旧版本有差异的部分。更新内容和版本提交相关事宜,请联系4399相关运营对接人员。
当游戏初始化时,SDK
将检查后台是否有新版本游戏上线,如果有,则显示更新内容,并提示用户升级。全自动更新无需配置和代码接入,SDK在初始化时自动检查更新。
如果游戏需要自定义更新界面,需告知4399运营人员,由后台关闭全自动更新开关。由游戏方自主接入更新接口
/*
* activity, 游戏 Activity 对象
* UpgradeProgress<UpgradeInfo> 检查更新回调,返回检查更新的进度、结果
*/
.getInstance().doCheck(activity, new UpgradeProgress<UpgradeInfo>() {
OperateCenter@Override
public void onStart() {}
@Override
public void onProgress(long... ps) {}
@Override
public void onFinished(int code, String message, UpgradeInfo info) {
// 根据 info 对象内容展示更新对话框
// 需要区分几种情况:
// 1 检查更新成功
// 1.1 有新版本
// 1.1.1 本地有下载好的文件,展示安装对话框,后续调用doInstall接口
// 1.1.2 本地没有下载好的文件,展示下载对话框,后续调用doInstall接口
// 1.2 无新版本,游戏方更加需要决定是否需要提升
// 2 检查更新失败,游戏方根据需要提供重试按钮,后续调用doCheck接口
showUpgradeInfo();
}
});
private void showUpdateInfo(final UpgradeInfo info) {
int code = info.code();
if (code == UpgradeInfo.STATUS_UP_TO_DATE) {
// 没有更新,这里可以选择不提示
} else if (code == UpgradeInfo.STATUS_NEED_UPGRADE) {
// 有更新内容
if (info.havePreparedFile()) {
// 本地已有下载好的更新包,显示“立即安装”, 即开始安装
// OperateCenter.getInstance().doInstall...
} else {
// 本地没有下载好的更新包,显示下载 UI
if (info.isCompel()) {
// 强制更新
} else {
// 非强制更新
}
}
} else {
// 检查更新失败,根据需要决定是否显示失败信息
}
}
.getInstance().doDownload(info, new UpgradeProgress<Void>() {
OperateCenter@Override
public void onStart() {
// 开始下载
}
@Override
public void onProgress(long... ps) {
long written = ps[0]; // 已完成下载的字节
long total = ps[1]; // 需要下载的字节
// 正在下载,展示进度
}
@Override
public void onFinished(int code, String message, Void aVoid) {
if (code == SUCCESS || code == SUCCESS_ALREADY) { // 下载成功, 可安装
// OperateCenter.getInstance().doInstall...
} else { // 下载失败,提醒重试
}
}
/*
* 下载成功后,或者本地已有下载好的更新包时,可以调用此函数
* SDK会根据是增量更新还是全量更新,采取不同的安装方式
*/
.getInstance().doInstall(info, new UpgradeProgress<Void>() {
OperateCenter@Override
public void onStart() {
// 开始安装,SDK 可能会做一些安装准备,如合并包
}
@Override
public void onProgress(long... ps) {
if (ps[0] == UpgradeProgress.PROGRESS_INSTALLING) {
// 内部开始安装流程
}
}
@Override
public void onFinished(int code, String message, Void aVoid) {
if (code != UpgradeProgress.SUCCESS) {
// 安装失败,可以提醒重试
}
// 安装成功,应用进程将自动退出
}
}