MSDK系统工具
Unity3D
检查手Q/微信是否安装
获取手Q/微信版本
检查接口是否支持
获取MSDK版本
获取安装渠道
获取注册渠道
用户反馈
Deeplink链接跳转
第三方启动
IP获取国家
MSDK日志开关设置
Android
检查手Q/微信是否安装
获取手Q/微信版本
检查接口是否支持
获取MSDK版本
获取安装渠道
获取注册渠道
用户反馈
Deeplink链接跳转
第三方启动
IP获取国家
MSDK日志开关设置
IOS
检查手Q/微信是否安装
获取手Q/微信版本
检查接口是否支持
获取MSDK版本
获取安装渠道
获取注册渠道
MSDK日志
用户反馈
Deeplink链接跳转
第三方启动
IP获取国家
MSDK日志开关设置
其他
数据结构
系统工具
工具 / Android / 前置条件

前置条件

您已经按msdk unity接入配置模块说明完成 接入配置

检查手Q、微信是否安装

1 概要说明

检查手Q、微信是否安装

2 注册回调

3 接口调用

1)功能描述

检查手Q、微信是否安装

2)接口声明
bool WGIsPlatformInstalled(ePlatform platformType);
3)参数说明
参名称 参数类型 说明
platform ePlatform 游戏传入的平台类型, 可能值为: ePlatform_QQ, ePlatform_Weixin
4)返回值
返回值类型 说明
bool false表示没有安装, true则表示安装了
5)示例代码
bool isInstalled =  WGPlatform::GetInstance()->WGIsPlatformInstalled((ePlatform)platform);

获取手Q、微信版本

1 概要说明

获取手Q、微信版本号

2 注册回调

3 接口调用

1)功能描述

目前仅Android支持获取手Q、微信版本号。接口详细说明如下

2)接口声明
const std::string WGGetPlatformAPPVersion(ePlatform platform)
3)参数说明
参数名称 参数类型 说明
platform ePlatform 游戏传入的平台类型, 可能值为: ePlatform_QQ, ePlatform_Weixin
4)返回值
返回值类型 说明
String APP版本号
5)示例代码
const std::string version = WGPlatform::GetInstance()->WGGetPlatformAPPVersion((ePlatform)Platform);

检查接口是否支持

1 概要说明

检查当前手Q、微信版本是否支持某个api

2 注册回调

3 接口调用

1)功能描述

有一些api在比较新的手Q、微信版下才能使用。调用WGCheckApiSupport接口会检查当前手Q、微信版本是否支持某个api。接口详细说明如下:

2)接口声明
bool WGCheckApiSupport(eApiName);
3)参数说明
参数名称 参数类型 说明
apiName eApiName 例如:eApiName_WGSendToQQWithPhoto,eApiName_WGJoinQQGroup
4)返回值
返回值类型 说明
bool false不支持, true则表示支持
5)示例代码
bool isSupport = WGPlatform::GetInstance()->WGCheckApiSupport((eApiName)jApiName);

获取MSDK版本

1 概要说明

获取MSDK的版本号

2 注册回调

3 接口调用

1)功能描述

调用WGGetVersion接口会返回MSDK的版本号。接口详细说明如下

2)接口声明
const std::string WGGetVersion()
3)参数说明
4)返回值
返回值类型 说明
String MSDK版本号。例如:2.14.5a
5)示例代码
const std::string version = WGPlatform::GetInstance()->WGGetVersion();

获取安装渠道

1 概要说明

获取安装渠道
备注:在验证获取安装渠道号接口接入后是否正常尽量选择真机进行验证;如果使用腾讯手游助手模拟器验证,请不要直接在本地安装apk到腾讯手游助手模拟器上,因为腾讯手游助手模拟器会对于本地安装的apk进行强制更改渠道号为100048(原渠道号小于6位的)或者为10004822

2 注册回调

3 接口调用

1)功能描述

安装渠道:游戏上线前根据渠道名称(例如应用宝,豌豆荚,91等)打包成不同渠道号的 apk 包, apk 包中的渠道号称之为安装渠道;对应 TLog 的 LoginChannel 字段。

调用WGGetChannelId会返回游戏的安装渠道。接口详细说明如下

2)接口声明
const std::string WGGetChannelId()
3)参数说明

4)返回值
返回值类型 说明
String 返回安装渠道id。如果该接口返回值为空,请再读取assets/channel.ini中的渠道号,
故游戏测试阶段可以自己写入渠道号到assets/channel.ini用于测试,正式渠道id会读取包中的值
IOS返回plist中的CHANNEL_DENGTA字段
5)示例代码
const std::string channelId = WGPlatform::GetInstance()->WGGetChannelId();
6)特殊说明

7)名称解释

安装渠道:游戏上线前根据渠道名称(例如应用宝,豌豆荚,91等)打包成不同渠道号的apk包, apk包中的渠道号称之为安装渠道.

获取注册渠道

1 概要说明

获取注册渠道

2 注册回调

3 接口调用

1)功能描述

注册渠道:用户在微信或手Q平台首次登陆时的安装渠道, 该值与账户绑定,不会改变;对应 TLog 的 RegChannel 字段。

用WGGetRegisterChannelId会返回用户的注册渠道。接口详细说明如下

2)接口声明
const std::string WGGetRegisterChannelId()
3)参数类型

4)返回值类型
返回值类型 说明
String 返回注册渠道id。例如:2017
5)示例代码
const std::string channelId = WGPlatform::GetInstance()->WGGetRegisterChannelId();
6)特殊说明

7)名称解释

注册渠道:用户在微信或手Q平台首次登陆时的安装渠道, 该值与账户绑定,不会改变.

用户反馈

1 概要说明

用户反馈:可以通过该事件接口,进行用户反馈

2 注册回调

3 接口调用

1)功能描述

用户反馈:可以通过该事件接口,进行用户反馈,反馈的内容可通过http://dev.ied.com/msdk/userfeedback/index查看(内网访问,可由对应腾讯运营接口人协助查询)。要完成此功能需要用到的接口有: WGFeedback, 接口详细说明如下:

2)接口声明
void WGFeedback(unsigned char *body);
3)参数说明
参数名称 类型 说明
body unsigned char * 反馈的内容
4)返回值

5)示例代码
WGPlatform::GetInstance()->WGFeedback((unsigned char *)"用户体验做到极致")

Deeplink链接跳转

1 概要说明

Deeplink链接跳转

2 注册回调

3 接口调用

1)功能描述

Deeplink 可支持分别跳转至微信游戏中心原生页面,和活动页面,具体表现方案和显示入口可以根据游戏的实际情况来定制。游戏中心原生页面包括:微信游戏中心首页、微信游戏中心详情页、微信游戏中心游戏库等;通过游戏后台参数设定来实现。活动页面包括:游戏的H5页面,通过游戏后台配置跳转地址来实现

2)接口声明
void WGOpenWeiXinDeeplink(unsigned char *link);
3)参数说明
参数名称 类型 说明
link unsigned char * 具体跳转deeplink,可填写为:
INDEX:跳转微信游戏中心首页
DETAIL:跳转微信游戏中心详情页
LIBRARY:跳转微信游戏中心游戏库
具体跳转的url (需要在微信游戏中心先配置好此url)
4)返回值

5)示例代码
WGPlatform::GetInstance()->WGOpenWeiXinDeeplink("INDEX");

第三方APP启动特权

1 概要说明

第三方APP启动特权,可以让用户在第三方APP中拉起游戏,并传递数据到游戏的功能,用于第三方APP和游戏的合作,例如从腾讯视频启动游戏的用户可得到得分,经验加成等。

2 注册回调

1) 您已经在腾讯开放平台上注册游戏并通过审核,或您的腾讯接口人已经通过内部渠道帮您注册游戏。

2) 您已经按接入配置模块说明完成 接入配置

3) 需要修改AndroidManifest.xml在其中添加相应配置项,并把qqappid替换成您的应用的qqappid

备注:注意新老版本在配置上有所不同,具体配置参考如下注释说明,老版本配置在3.2.5a开始支持,新版本配置在3.2.8a及其以上版本支持

<!-- 第三方APP拉起配置 -->
<activity
    android:name="com.tencent.msdk.SchemeActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- 3.2.8a及其以上版本这里请设置tencentmsdk+qqappid;3.2.5a~3.2.7a版本这里请设置tencentvideo+qqappid-->
        <data android:scheme="tencentmsdk100703379" />
    </intent-filter>
</activity>

4) 需要实现OnWakeupNotify回调函数

第三方APP拉起游戏时,会把启动的平台,需要传递的参数等信息,通过WGPlatformObserver的OnWakeupNotify(WakeupRet)通知到游戏,其中WakeupRet.platform代表拉起游戏的平台,例如此时WakeupRet.platform为EWakeupPlatform.eWakeupPlatform_TencentMsdk(3.2.5a~3.2.7a版本这里为EWakeupPlatform.eWakeupPlatform_TencentVideo);WakeupRet.extInfo是Vector类型,携带了平台传递的数据。

3 接口调用

4)返回值

5)示例代码
virtual void OnWakeupNotify(WakeupRet &wakeupRet)
    {
        LOGD("OnWakeupNotify: platform:%d flag:%d openid:%s", wakeupRet.platform, wakeupRet.flag,
            wakeupRet.open_id.c_str());wakeupRet.extInfo
        // TODO GAME 这里要处理异账号的逻辑
        switch (wakeupRet.flag)
        {
            case eFlag_Succ:
                if(wakeupRet.platform == eWakeupPlatform_TencentMsdk )//3.2.5a~3.2.7a版本为eWakeupPlatform_TencentVideo
                {
                    jstring j_msg_title = mEnv->NewStringUTF("由MSDK Scheme启动");
                    std::string c_extinfo;
                    for(int i =0;i<wakeupRet.extInfo.size();i++){
                        c_extinfo = c_extinfo + wakeupRet.extInfo[i].key + ":" + wakeupRet.extInfo[i].value + "\n";
                    }
                    jstring j_msg_msg = mEnv->NewStringUTF(c_extinfo.c_str());
                    jclass cls = mEnv->GetObjectClass(gActivity);
                    jmethodID methodShowTips = mEnv->GetMethodID(cls, "showTipsDialog", "(Ljava/lang/String;Ljava/lang/String;)V");
                    mEnv->CallVoidMethod(gActivity, methodShowTips, j_msg_title, j_msg_msg);
                    mEnv->DeleteLocalRef(j_msg_title);
                    mEnv->DeleteLocalRef(j_msg_msg);
                }
                std::string platformdata;
                std::string gamedata;
                for(int i = 0;i < wakeupRet.extInfo.size();i++){
                    if(wakeupRet.extInfo[i].key.compare("platformdata"))
                    {
                        platformdata = wakeupRet.extInfo[i].value;
                        LOGD("OnwakeupNotify: platformdata:%s",platformdata);
                    }
                    if(wakeupRet.extInfo[i].key.compare("gamedata"))
                    {
                        gamedata = wakeupRet.extInfo[i].value;
                        LOGD("OnwakeupNotify: gamedata:%s",gamedata);
                    }
                }

            default:
            {
                // default 不处理
                LOGD("login%s", "");
                jclass cls = mEnv->GetObjectClass(gActivity);
                jmethodID methodletUserLogout = mEnv->GetMethodID(cls, "letUserLogout", "()V");
                mEnv->CallVoidMethod(gActivity, methodletUserLogout);
                LOGD("OnWakeupNotify call letUserLogout end%s", "");
                break;
            }
        }
    }

根据 IP 地址获取国家信息

1)功能描述

根据 IP 地址获取国家信息。3.3.7版本开始新增该接口。为接收回调,您需要注册 WGPlatformObserver 并通过 OnLocationGotCountryFromIPNotify 进行处理

2)接口声明

    void WGGetCountryFromIP();

3)参数说明

4)返回值

无,分享结果通过 WGPlatformObserver 回调 OnLocationGotCountryFromIPNotify 函数返回游戏

5)示例代码

    //回调函数
    WGPlatformObserver::OnLocationGotCountryFromIPNotify(GetCountryFromIPRet& fromIPRet);
    //接口示例
    WGPlatform::WGGetCountryFromIP();

MSDK 日志开关设置

1)功能描述

WGOpenMSDKLog 接口,true 打开,false 关闭。可选择性关闭日志(日志级别为 kLevelNone)。该接口优先级低于云控,当云控中设置日志级别时,该接口不起作用,此时业务可在云控中设置日志级别为 kLevelNone,从而不输出日志。3.3.29 版本开始新增该接口。

2)接口声明

void WGOpenMSDKLog(bool enabled);