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

接入指引

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

检查手Q、微信是否安装

接口详细说明如下

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

获取MSDK版本

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

1)接口声明
const std::string WGGetVersion();
2)参数说明

3)返回值
返回值类型 说明
std::string MSDK版本号。例如:2.14.5i
4)示例代码
std::string version = WGPlatform::GetInstane()->WGGetVersion()

获取安装渠道

安装渠道:iOS返回info.plist中的CHANNEL_DENGTA字段.

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

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

3)返回值
返回值类型 说明
std::string 返回安装渠道id。
IOS返回plist中的CHANNEL_DENGTA字段;ios渠道号固定为1001,即苹果应用商店
4)示例代码
std::string channelId = WGPlatform::GetInstane()->WGGetChannelId();

获取注册渠道

注册渠道:用户在微信或手Q平台首次登陆时的安装渠道, 该值与账户绑定,不会改变;ios渠道号固定为1001,即苹果应用商店

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

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

3)返回值类型
返回值类型 说明
std::string 返回注册渠道id。例如:1001
4)示例代码
std::string registerChannelId = WGPlatform::GetInstane()->WGGetRegisterChannelId();

打开MSDK日志

测试环境下查看MSDK日志,需要调用该接口打开msdk日志开关;iOS端日志不会写文件,仅在控制台输出,需打开日志开关。

1)接口声明
void WGOpenMSDKLog(bool enabled);
2)参数类型
参名称 参数类型 说明
enabled bool true:打开 false:关闭
3)返回值类型

4)示例代码
WGPlatform::GetInstance()->WGOpenMSDKLog(true);

用户反馈

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

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

4)示例代码
WGPlatform::GetInstance()->WGFeedback((unsigned char*)"TestFeedBack");

Deeplink链接跳转

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

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

4)示例代码
WGPlatform::GetInstance()->WGOpenWeiXinDeeplink((unsigned char*)"INDEX");

第三方APP启动特权

1 概要说明

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

2 注册回调

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

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

3) 需要修改plist在其中添加相应URL Types配置项,并把事例中qqappid部分替换成您的应用的qqappid

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

//3.2.5i~3.2.7i版本以下配置如下:
Identifier:tencentvideo
URL Schemes:tencentlaunch100703379
Role:Editor

//3.2.8i及其以上版本配置如下:
Identifier:tencentmsdk
URL Schemes:tencentmsdk100703379
Role:Editor

4) 需要实现OnWakeupNotify回调函数

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

3 接口调用

4)返回值

5)示例代码
- (void)onWakeupNotify:(WakeupRet&)wakeupRet
{
    NSString *message = @"";
    switch (wakeupRet.flag)
    {
        //处理腾讯视频拉起逻辑
        case eFlag_Succ:
            NSLog(@"MSDKDemo:唤醒成功");



            if(wakeupRet.platform == eWakeupPlatform_TencentMsdk )//3.2.5i~3.2.7i版本为eWakeupPlatform_TencentVideo
            {
                for(KVPair kv :wakeupRet.extInfo){
                    NSString *key = [NSString stringWithCString:kv.key.c_str() encoding:NSUTF8StringEncoding];
                    NSString *value =[NSString stringWithCString:kv.value.c_str() encoding:NSUTF8StringEncoding];
                    message = [NSString stringWithFormat:@"%@%@:%@\n",message,key,value];
                }
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"腾讯视频拉起"
                                                                message:message
                                                               delegate:nil
                                                      cancelButtonTitle:@"确定"
                                                      otherButtonTitles: nil
                                      ];
                [alert show];
            }
            break;
        case eFlag_NeedLogin:
        {
            //处理腾讯视频拉起逻辑
            if(wakeupRet.platform == eWakeupPlatform_TencentMsdk)//3.2.5i~3.2.7i版本为eWakeupPlatform_TencentVideo
            {
                for(KVPair kv :wakeupRet.extInfo){
                    NSString *key = [NSString stringWithCString:kv.key.c_str() encoding:NSUTF8StringEncoding];
                    NSString *value =[NSString stringWithCString:kv.value.c_str() encoding:NSUTF8StringEncoding];
                    message = [NSString stringWithFormat:@"%@%@:%@\n",message,key,value];
                }
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"腾讯视频拉起"
                                                                message:message
                                                               delegate:nil
                                                      cancelButtonTitle:@"确定"
                                                      otherButtonTitles: nil
                                      ];
                [alert show];
            }else{
                NSLog(@"MSDKDemo:异账号发生,需要进入登录页");
                WGPlatform::GetInstance()->WGLogout();
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"异账号"
                                                                message:@"发现异账号,需要进入登录页"
                                                               delegate:nil
                                                      cancelButtonTitle:@"确定"
                                                      otherButtonTitles:nil];
                [alert show];
            }

            NSArray *vcArray = self.navigationController.viewControllers;
            if (vcArray.count >= 2)
            {
                [self.navigationController popToRootViewControllerAnimated:YES];
            }
        }

            break;
        case eFlag_UrlLogin:
        {
            NSLog(@"MSDKDemo:异账号发生,通过外部拉起登录成功");
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"异账号"
                                                            message:@"发现异账号,通过外部拉起登录成功,等待OnLoginNotify回调"
                                                           delegate:nil
                                                  cancelButtonTitle:@"确定"
                                                  otherButtonTitles:nil];
            [alert show];
        }

            break;
        case eFlag_NeedSelectAccount:
        {
            NSLog(@"MSDKDemo:异账号发生,需要提示用户选择");
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"异账号"
                                                            message:@"发现异账号,请选择使用哪个账号登录"
                                                           delegate:self
                                                  cancelButtonTitle:@"不切换,使用原账号"
                                                  otherButtonTitles:@"切换外部账号登录", nil];
            [alert show];
        }
            break;
        case eFlag_AccountRefresh:
            NSLog(@"MSDKDemo:外部账号和已登录账号相同,使用外部票据更新本地票据");
            break;
        default:
            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);