概述
MSDK与应用宝团队一起为游戏提供省流量更新的功能;用户可以通过下载差量更新包来更新游戏包从而达到节省用户流量的目的。
接入向导
MSDK 3.3.30a 版本开始删除应用宝省流量 SDK 组件
配置变化
将 assets\msdkconfig.ini 文件中 SAVE_UPDATE 配置为 false。
MSDKLibrary\libs 下应用宝省流量 SDK 相关 jar 包删除
- tmassistantsdk-codec.jar
- tmassistantsdk-jce.jar
- tmassistantsdk_selfupdate_3.0.9_2022_20220106214445.jar
1 接入配置
1)游戏已经按MSDK Android接入配置模块说明完成
2)确保省流量更新配置开关SAVE_UPDATE=true,参考接入配置Step3 配置信息
2 注册回调
1)接口声明
void WGSetSaveUpdateObserver(WGSaveUpdateObserver *saveUpdateObserver)
2)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
observer | WGSaveUpdateObserver | 省流量更新回调类 |
3)返回值
无
4)示例代码
class SaveUpdateCallback : public WGSaveUpdateObserver
{
virtual void OnCheckNeedUpdateInfo(long newApkSize, std::string newFeature, long patchSize, int status,
std::string updateDownloadUrl, int updateMethod)
{
LOGD(
"SaveUpdateCallback OnCheckNeedUpdateInfo "
"newApkSize: %ld; newFeature: %s; patchSize: %ld; status: %d; updateDownloadUrl: %s; updateMethod: %d",
newApkSize, newFeature.c_str(), patchSize, status, updateDownloadUrl.c_str(), updateMethod);
char buffer[512];
snprintf(buffer, 512,
"SaveUpdateCallback OnCheckNeedUpdateInfo "
"newApkSize: %ld; newFeature: %s; patchSize: %ld; status: %d; updateDownloadUrl: %s; updateMethod: %d",
newApkSize, newFeature.c_str(), patchSize, status, updateDownloadUrl.c_str(), updateMethod);
buffer[511] = '\0';
displayResult(std::string(buffer));
}
virtual void OnDownloadAppProgressChanged(long receiveDataLen, long totalDataLen)
{
LOGD("SaveUpdateCallback OnDownloadAppProgressChanged receiveDataLen: %ld; totalDataLen: %ld;",
receiveDataLen, totalDataLen);
char buffer[512];
snprintf(buffer, 512,
"SaveUpdateCallback OnDownloadAppProgressChanged receiveDataLen: %ld; totalDataLen: %ld;", receiveDataLen,
totalDataLen);
buffer[511] = '\0';
displayResult(std::string(buffer));
updateProgressDialog(receiveDataLen, totalDataLen);
}
virtual void OnDownloadAppStateChanged(int state, int errorCode, std::string errorMsg)
{
LOGD("SaveUpdateCallback OnDownloadAppStateChanged state: %d; errorCode: %d; errorMsg: %s", state, errorCode,
errorMsg.c_str());
char buffer[512];
snprintf(buffer, 512, "SaveUpdateCallback OnDownloadAppStateChanged state: %d; errorCode: %d; errorMsg: %s",
state, errorCode, errorMsg.c_str());
buffer[511] = '\0';
displayResult(std::string(buffer));
}
virtual void OnDownloadYYBProgressChanged(std::string url, long receiveDataLen, long totalDataLen)
{
LOGD("SaveUpdateCallback OnDownloadYYBProgressChanged url: %s; receiveDataLen: %ld; totalDataLen: %ld",
url.c_str(), receiveDataLen, totalDataLen);
char buffer[512];
snprintf(buffer, 512,
"SaveUpdateCallback OnDownloadYYBProgressChanged url: %s; receiveDataLen: %ld; totalDataLen: %ld",
url.c_str(), receiveDataLen, totalDataLen);
buffer[511] = '\0';
displayResult(std::string(buffer));
}
virtual void OnDownloadYYBStateChanged(std::string url, int state, int errorCode, std::string errorMsg)
{
LOGD("SaveUpdateCallback OnDownloadYYBStateChanged url: %s, state: %d, errorCode: %d, errorMsg: %s",
url.c_str(), state, errorCode, errorMsg.c_str());
char buffer[512];
snprintf(buffer, 512,
"SaveUpdateCallback OnDownloadYYBStateChanged url: %s, state: %d, errorCode: %d, errorMsg: %s",
url.c_str(), state, errorCode, errorMsg.c_str());
buffer[511] = '\0';
displayResult(std::string(buffer));
}
};
5)特殊说明
void OnCheckNeedUpdateInfo(long newApkSize, std::string newFeature, long patchSize, int status,
std::string updateDownloadUrl, int updateMethod)
1)OnCheckNeedUpdateInfo参数说明
参数名称 | 类型 | 说明 |
---|---|---|
newApkSize | long | 新apk包的文件大小 |
newFeature | string | 新版本描述 |
patchSize | long | 省流量更新包的文件大小 |
status | int | 检查结果 TMSelfUpdateUpdateInfo.STATUS_OK : 成功 TMSelfUpdateUpdateInfo.STATUS_CHECKUPDATE_FAILURE : 失败 TMSelfUpdateUpdateInfo.STATUS_CHECKUPDATE_RESPONSE_IS_NULL : 响应为空 |
updateDownloadUrl | string | 下载地址 |
updateMethod | int | 更新方式 TMSelfUpdateUpdateInfo.UpdateMethod_NoUpdate : 无更新包 TMSelfUpdateUpdateInfo.UpdateMethod_Normal : 全量更新包 TMSelfUpdateUpdateInfo.UpdateMethod_ByPatch : 增量更新包 |
void OnDownloadAppProgressChanged(long receiveDataLen, long totalDataLen)
2)OnDownloadAppProgressChanged参数说明
测试名称 | 类型 | 说明 |
---|---|---|
receiveDataLen | long | 已下载的数据大小 |
totalDataLen | long | 全部的数据大小 |
void OnDownloadAppStateChanged(int state, int errorCode, std::string errorMsg)
3)OnDownloadAppStateChanged参数说明
测试名称 | 类型 | 说明 |
---|---|---|
state | int | 状态: TMAssistantDownloadTaskState.DownloadSDKTaskState_WAITING = 1; TMAssistantDownloadTaskState.DownloadSDKTaskState_DOWNLOADING = 2; TMAssistantDownloadTaskState.DownloadSDKTaskState_PAUSED = 3; TMAssistantDownloadTaskState.DownloadSDKTaskState_SUCCEED = 4; TMAssistantDownloadTaskState.DownloadSDKTaskState_FAILED = 5; TMAssistantDownloadTaskState.DownloadSDKTaskState_DELETE = 6; |
errorCode | int | 错误码 |
errorMsg | string | 错误信息 |
void OnDownloadYYBProgressChanged(std::string url, long receiveDataLen, long totalDataLen)
4)OnDownloadYYBProgressChanged参数说明
测试名称 | 类型 | 说明 |
---|---|---|
url | string | 下载地址 |
receiveDataLen | long | 已下载的数据大小 |
totalDataLen | long | 要下载的数据大小 |
void OnDownloadYYBStateChanged(std::string url, int state, int errorCode, std::string errorMsg)
5)OnDownloadYYBStateChanged参数说明
参数名称 | 类型 | 说明 |
---|---|---|
url | string | 下载地址 |
state | int | 状态: TMSelfUpdateTaskState.SelfUpdateSDKTaskState_SUCCESS = 100; TMSelfUpdateTaskState.SelfUpdateSDKTaskState_DOWNLOADING = 101; TMSelfUpdateTaskState.SelfUpdateSDKTaskState_FAILURE = 102; TMSelfUpdateTaskState.SelfUpdateSDKTaskState_GENINGNEWAPK = 103; |
errorCode | int | 错误码 |
errorMsg | string | 错误信息 |
3 接入流程
使用应用宝省流量更新流程图:
4 参考Demo示例
示例参考 com/example/module/submodule/MyappModule.java 文件的 callWGCheckNeedUpdate()、callWGCheckYYBInstalled()、callWGStartSaveUpdate()、callWGStartCommonUpdate() 方法。
检查应用宝是否安装
1 概要说明
您可以调用 WGCheckYYBInstalled() 接口检查应用宝是否安装并给出相应的提示;该检查不是必须的,如果用户没有安装应用宝更新前会自动先下载应用宝
2 注册回调
无
3 接口调用
1)功能描述
您可以调用 WGCheckYYBInstalled() 接口检查应用宝是否安装并给出相应的提示;该检查不是必须的,如果用户没有安装应用宝更新前会自动先下载应用宝
2)接口声明
int WGCheckYYBInstalled();
3)参数说明
无
4)返回值
int类型
0:表示应用宝已安装
1:表示应用宝未安装
其他值表示安装了低版本的应用宝
5)示例代码
int ret = WGPlatform::GetInstance()->WGCheckYYBInstalled();
switch (ret)
{
case 0: // 游戏TODO 应用宝已安装
break;
case 1: // 游戏TODO 应用宝未安装
break;
default: // 游戏TODO 安装了低版本的应用宝
break;
}
6)特殊说明
无
7)名称解释
无
检查是否有更新
1 概要说明
查询当前应用是否有更新
2 注册回调
参考接入向导Step2
3 接口调用
1)功能描述
调用 WGCheckNeedUpdate() 接口可以查询当前应用是否有更新。
2)接口声明
void WGCheckNeedUpdate();
3)参数说明
无
4)返回值
无,通过 CheckUpdateEvent 回调,回调设置参考 检查游戏更新的回调
5)示例代码
WGPlatform::GetInstance()->WGCheckNeedUpdate();
6)特殊说明
无
7)名称解释
无
开始省流量更新
1 概要说明
调用 WGStartSaveUpdate() 接口可以开始省流量更新
2 注册回调
参考接入向导Step2
3 接口调用
1)功能描述
调用 WGStartSaveUpdate() 接口可以开始省流量更新。如果手机上没有安装应用宝则此接口会自动下载应用宝, 并通过DownloadYYBProgressEvent和DownloadYYBStateEvent两个接口分别回调。如果手机上已经安装应用宝则此接口会根据参数选择是否拉起应用宝下载。下载进度和状态变化会通过DownloadAppProgressEvent和DownloadAppStateEvent回调给游戏。
2)接口声明
void WGStartSaveUpdate(bool isUseYYB);
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
isUseYYB | bool | 是否拉起应用宝更新游戏,如果选否,会直接在游戏内完成更新 |
4)返回值
无,下载进度和状态变化会通过DownloadAppProgressEvent和DownloadAppStateEvent回调给游戏
5)示例代码
WGPlatform::GetInstance()->WGStartSaveUpdate(isUseYYB);
6)特殊说明
如果手机上没有安装应用宝则此接口会自动下载应用宝, 并通过OnDownloadYYBProgressChanged和OnDownloadYYBStateChanged两个接口分别回调
7)名称解释
无