省流量更新
Unity3D
概述
接入向导
检查应用宝是否安装
检查是否有更新
开始省流量更新
常见问题
Android
概述
接入向导
检查应用宝是否安装
检查是否有更新
开始省流量更新
常见问题
其他
数据结构
系统工具
省流量更新 / Unity3D / 概述

概述

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)名称解释

常见问题