导航
连线MSDKMSDK客服
数据结构
Unity3D
Android
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
GetCountryFromIPRet
GetIPInfoRet
IOS
其他
错误码 / Android / CallbackRet

CallbackRet

public abstract class CallbackRet{
    public int flag=eFlag.eFlag_Error;//结果
    public String desc="";
    public int platform=0;//平台类型
}

LoginRet

存储用户登录后得到的信息

public class LoginRet extends CallbackRet{
    public String open_id=""; //用户账号唯一标识
    public String user_id=""; //用户ID,保留,游戏无需关心
    public String pf="";      //用于支付    调用WGGetPf()获取
    public String pf_key="";  //用于支付     调用WGGetPfKey()获取
    public String prajna_ext;   //3.3.7新增字段
    public Vector<TokenRet> token=new Vector<TokenRet>(); //存储票据列表
}

TokenRet

票据信息

public class TokenRet{
        public int type=0;         //票据类型  eTokenType类型
        public String value="";    //票据value
        public long expiration=0;  //票据过期时间(游戏不需要关心)
}

eTokenType

token种类

typedef enum _eTokenType{
    eToken_QQ_Access=1, // 手Q accessToken
    eToken_QQ_Pay,  // 手Q payToken
    eToken_WX_Access, // 微信accessToken
    eToken_WX_Code, // 微信code, 已弃用
    eToken_WX_Refresh, // 微信refreshToken
    eToken_Guest_Access // Guest模式下的票据
}
平台 token类型 token作用 type 有效期
手Q accesstoken 查询手Q个人、好友、关系链、分享等功能 eToken_QQ_Access 90天
手Q paytoken 支付相关 eToken_QQ_Pay 7天
微信 accesstoken 查询微信个人、好友、关系链、分享、支付等 eToken_WX_Access 24小时
微信 refreshtoken 刷新accesstoken eToken_WX_Refresh 30天

WakeupRet

存储游戏被平台唤醒时,平台传递到客户端的信息

public class WakeupRet extends CallbackRet{
    /** 传递的openid */
    public String open_id="";
    /** 对应微信消息中的mediaTagName */
    public String media_tag_name="";
    /** 扩展消息,唤醒游戏时带给游戏 */
    public String messageExt="";
    /** 语言     目前只有微信5.1以上用,手Q不用 */
    public String lang="";
    /** 国家     目前只有微信5.1以上用,手Q不用 */
    public String country="";
    public Vector<KVPair> extInfo=new Vector<KVPair>();
  ...
}

eMSDK_SCREENDIR

typedef enum _eMSDK_SCREENDIR {
    eMSDK_SCREENDIR_SENSOR=0,     //横竖屏
    eMSDK_SCREENDIR_PORTRAIT=1,   //竖屏
    eMSDK_SCREENDIR_LANDSCAPE=2,  //横屏
}eMSDK_SCREENDIR;

LocationRet

地理位置信息

public class LocationRet  extends CallbackRet{
    public double longitude;
    public double latitude;
    ...
}

RelationRet

关系链信息,即“一群”好友的信息

public class RelationRet extends CallbackRet {
    public Vector<PersonInfo> persons=new Vector<PersonInfo>();

    public String toString() {
        String str="";
        if (this != null && this.persons != null) {
            str=super.toString();
            str=str + "friends(num): " + this.persons.size() + ";";
        } else {
            str="friends(num): 0;";
        }
        return str;
    }
}

PersonInfo

好友信息

public class PersonInfo{
    public String nickName="";
    public String openId="";
    public String gender="";
    public String pictureSmall="";
    public String pictureMiddle="";
    public String pictureLarge="";
    public String province="";
    public String city="";
    public String gpsCity="";

    public float distance=0;
    public bool isFriend=false;
    public long timestamp=0;

    public String lang="";
    public String country="";
    public String friendRemark="";  //仅针对于wx,权限正常且微信正常返回好友备注时,该字段才存在
}

ShareRet

分享信息

public class ShareRet extends CallbackRet{
    public String extInfo="";
    ...
}

GroupRet

群组信息

public class GroupRet extends CallbackRet{
        public int errorCode=0;
        public QQGroupInfo mQQGroupInfo ;
        public WXGroupInfo mWXGroupInfo ;
        ...
}

QQGroupInfo

Q群信息

public class QQGroupInfo{
    public String groupName=""; /*群名称 */
    public String fingerMemo="";/*群的相关简介 */
    public String memberNum=""; /*群成员数 */
    public String maxNum=""; /*该群可容纳的最多成员数 */
    public String ownerOpenid=""; /*群主openid */
    public String unionid=""; /*与该QQ群绑定的公会ID */
    public String zoneid=""; /*大区ID */
    public String adminOpenids=""; /*管理员openid。如果管理员有多个的话,用“,”隔开,例如0000000000000000000000002329FBEF,0000000000000000000000002329FAFF */
    public String groupOpenid="";  /*和游戏公会ID绑定的QQ群的groupOpenid */
    public String groupKey="";   /*需要添加的QQ群对应的key */
}

WXGroupInfo

微信群信息

public class WXGroupInfo{
    public String openIdList="";      /* 群成员openID */
    public String memberNum="";       /* 群成员数 */
    public String chatRoomURL="";     /*假如群聊URL */
}

eFlag

登录返回码

public class eFlag{
    public const int eFlag_Succ=0;
    /** QQ&QZone login fail and can't get accesstoken */
    public const int eFlag_QQ_NoAcessToken=1000;
    /** QQ&QZone user has cancelled login process */
    public const int eFlag_QQ_UserCancel=1001;

    /** QQ&QZone login fail (tencentDidNotLogin) */
    public const int eFlag_QQ_LoginFail=1002;
    /** QQ&QZone networkErr */
    public const int eFlag_QQ_NetworkErr=1003;
    /** QQ is not install */
    public const int eFlag_QQ_NotInstall=1004;
    /** QQ don't support open api */
    public const int eFlag_QQ_NotSupportApi=1005;
    /** QQ&QZone networkErr */
    public const int eFlag_QQ_AccessTokenExpired=1006;
    /** pay token 过期 时间  */
    public const int eFlag_QQ_PayTokenExpired=1007;

    /** Weixin is not installed */
    public const int eFlag_WX_NotInstall=2000;
    /** Weixin don't support api */
    public const int eFlag_WX_NotSupportApi=2001;
    /** Weixin user has cancelled */
    public const int eFlag_WX_UserCancel=2002;
    /** Weixin User has denys */
    public const int eFlag_WX_UserDeny=2003;
    public const int eFlag_WX_LoginFail=2004;
    /** Weixin 刷新票据成功 */
    public const int eFlag_WX_RefreshTokenSucc=2005;
    /** Weixin 刷新票据失败 */
    public const int eFlag_WX_RefreshTokenFail=2006;
    /** Weixin accessToken过期, 尝试用refreshtoken刷新票据中 */
    public const int eFlag_WX_AccessTokenExpired=2007;
    /** Weixin refresh也过期 */
    public const int eFlag_WX_RefreshTokenExpired=2008;

    public const int eFlag_Error=-1;

    /** 自动登录失败, 需要重新授权, 包含本地票据过期, 刷新失败登所有错误 */
    public const int eFlag_Local_Invalid=-2;

    /** 不在白名单 */
    public const int eFlag_NotInWhiteList=-3;
    /** 需要引导用户开启定位服务 */
    public const int eFlag_LbsNeedOpenLocationService=-4;
    /** 定位失败     */
    public const int eFlag_LbsLocateFail=-5;
    /** 定位失败定位开关未打开  */
    public const int eFlag_LbsNeedOpenLocationSwitch=-6;
    /** 用户未授权关系链权限   */
    public const int eFlag_UnPermission=-9;
    /** 定位超时 */
    public const int eFlag_LbsLocateTimeout=-11;

    /** 快速登陆相关返回值 */
    /**需要进入登陆页 */
    public const int eFlag_NeedLogin=3001;
    /**使用URL登陆成功 */
    public const int eFlag_UrlLogin=3002;
    /**需要弹出异账号提示 */
    public const int eFlag_NeedSelectAccount=3003;
    /**通过URL将票据刷新 */
    public const int eFlag_AccountRefresh=3004;
    /**中控相关返回值 */
    public const int eFlag_Need_Realname_Auth=3005;
    /**正在进行MSDK实名认证,请忽调用游戏自定义的实名认证界面 */
    public const int eFlag_Need_MSDK_Realname_Auth=3006;

    /** 该功能在Guest模式下不可使用 */
    public const int eFlag_InvalidOnGuest=-7;
    /** Guest的票据失效 */
    public const int eFlag_Guest_AccessTokenInvalid=4001;
    /** Guest模式登录失败 */
    public const int eFlag_Guest_LoginFailed=4002;
    /** Guest模式注册失败 */
    public const int eFlag_Guest_RegisterFailed=4003;

    /*添加正在检查token的逻辑 */
    public const int eFlag_Checking_Token=5001;
    /**正在登录中,请等待登录回调后再操作 */
    public const int eFlag_Logining=5002;
    /**正在登录中,请等待登录回调后再操作 */
    public const int eFlag_Login_Timeout=5003;
    /**调用接口太频繁 */
    public const int eFlag_RequestTooFrequently=5004;

    /**内置浏览器关闭 */
    public const int eFlag_WebviewClosed=6001;
    /**打开注销账号的url无效 */
    public const int eFlag_Invalid_Delete_Account_URL=6002;
    /**注销账号操作时未登录或渠道不支持 */
    public const int eFlag_Invalid_Login_Channel=6003;
    /**webview js给native传递参数的事件 */
    public const int eFlag_Webview_page_event=7000;
}

手Q相关:

返回码 名称 描述 推荐处理
1000 eFlag_QQ_NoAcessToken 手Q登陆失败,未获取到accesstoken 返回登录界面,引导玩家重新登录授权
1001 eFlag_QQ_UserCancel 玩家取消手Q授权登录 返回登录界面,并告知玩家已取消手Q授权登录
1002 eFlag_QQ_LoginFail 手Q登陆失败 返回登录界面,引导玩家重新登录授权
1003 eFlag_QQ_NetworkErr 网络错误 重试
1004 eFlag_QQ_NotInstall 玩家设备未安装手Q客户端 引导玩家安装手Q客户端
1005 eFlag_QQ_NotSupportApi 玩家手Q客户端不支持此接口 引导玩家升级手Q客户端
1006 eFlag_QQ_AccessTokenExpired accesstoken过期 返回登录界面,引导玩家重新登录授权
1007 eFlag_QQ_PayTokenExpired paytoken过期 返回登录界面,引导玩家重新登录授权

微信相关:

返回码 名称 描述 推荐处理
2000 eFlag_WX_NotInstall 玩家设备未安装微信客户端 引导玩家安装微信客户端
2001 eFlag_WX_NotSupportApi 玩家微信客户端不支持此接口 引导玩家升级微信客户端
2002 eFlag_WX_UserCancel 玩家取消微信授权登录 返回登录界面,并告知玩家已取消微信授权登录
2003 eFlag_WX_UserDeny 玩家拒绝微信授权登录 返回登录界面,并告知玩家已拒绝微信授权登录
2004 eFlag_WX_LoginFail 微信登录失败 返回登录界面,引导玩家重新登录授权
2005 eFlag_WX_RefreshTokenSucc 微信刷新票据成功 获取微信票据,登录进入游戏
2006 eFlag_WX_RefreshTokenFail 微信刷新票据失败 返回登录界面,引导玩家重新登录授权
2007 eFlag_WX_AccessTokenExpired 微信accessToken过期 尝试用refreshtoken刷新票据
2008 eFlag_WX_RefreshTokenExpired 微信refreshtoken过期 返回登录界面,引导玩家重新登录授权

异账号相关:

返回码 名称 描述 推荐处理
3001 eFlag_NeedLogin 游戏本地账号和拉起账号均无法登陆 返回登录界面,引导玩家重新登录授权
3002 eFlag_UrlLogin 不存在异账号,游戏通过拉起账号快速登陆成功 读取LoginRet结构体中的票据进行游戏授权流程
3003 eFlag_NeedSelectAccount 游戏本地账号和拉起账号存在异账号 弹出对话框让用户选择登陆的账号
3004 eFlag_AccountRefresh 不存在异账号,MSDK已通过刷新接口将本地账号票据刷新 读取LoginRet结构体中的票据进行游戏授权流程

手QQ群(v2)相关:

返回码 描述 推荐处理
221001 已绑定群 无需处理
221002 未绑定群 无需处理
221003 绑群回包错误 无需处理
221004 获取uin和tskey失败 检查登录态是否正确
221005 当前用户不是群主 无需处理
221006 无效的openid 检查openid是否有效
221007 参数无效 检查接口参数,如appid,guild_id,zone_id,gc等等,具体请参考接口参数列表
221008 无接口调用权限 参照权限管理申请权限
-182001 请求群后台cgi失败 无需处理
-182002 操作cmem失败 无需处理
-182003 创建群失败 无需处理
-182004 查询群失败 无需处理
-182005 openid转uin失败 无需处理
-182008 查询idip失败 无需处理
-500003~-500009 解析服务返回数据失败 无需处理
-120000 登录态校验失败 检查登录态是否有效

微信群(创建群,解绑群)相关:

返回码 描述 推荐处理
-1 系统错误 重试一次,若失败请通过企业QQ(800013811)联系移动网游MSDK技术支持人员。
-10000 内部错误 游戏没有在开平开通创建群的权限。
-10001 该游戏没有建群权限 游戏没有在游戏中心开通创建群的权限。
-10002 参数检查错误 确认参数准确性,若失败请通过企业QQ(800013811)联系移动网游MSDK技术支持人员。
-10003 链接不存在(与群无关)
-10004 获取跳转链接失败(与群无关)
-10005 群ID已存在 不要重复建群
-10007 群ID不存在 换一个存在的群ID
-10008 群ID不可用
-10009 用户不在群里
-20001 解绑群达到上限 解绑群不能超过20个
-20002 用户创建群达到上限
-201608 kv读失败 联系微信相关接口人员
-201609 kv写失败 联系微信相关接口人员

微信群(创建群,解绑群)2.18.0以后版本使用,此错误码anroid和ios是统一的相关:

返回码 描述 推荐处理
-1 系统错误 重试一次,若失败请通过企业QQ(800013811)联系移动网游MSDK技术支持人员
2009 没有建群权限 找产品人员开通权限
2010 参数检查错误
2011 微信群已经存在
2012 建群或者解绑群数量超过上限,一个用户建群或者解绑群不能超过20个
2013 群ID不存在
2014 当天建群数量超限 换个id创建
2015 加群数量超限 可更换其他账号验证

其他

返回码 名称 描述 推荐处理
0 eFlag_Succ 成功 按照接口的成功逻辑处理
-1 eFlag_Error 错误 按照接口的默认错误处理方法处理
-2 eFlag_Local_Invalid 账号自动登录失败, 包含本地票据过期, 刷新失败等所有错误 返回登录界面,引导玩家重新登录授权
-3 eFlag_NotInWhiteList 玩家账号不在白名单中 提示玩家未抢号,引导玩家进入应用宝抢号
-4 eFlag_LbsNeedOpenLocationService 游戏所需的定位服务未开启 引导用户开启定位服务
-5 eFlag_LbsLocateFail 游戏定位失败 提示玩家定位失败,需重试
3005 eFlag_Need_Realname_Auth 游戏需要实名认证 暂停游戏对msdk登陆的超时处理

eQQScene

手Q场景枚举

public enum eQQScene{
    QQScene_None=0,
    QQScene_QZone=1, //QQ空间
    QQScene_Session=2 //手Q会话
}

eWechatScene

微信场景枚举

public enum eWechatScene{
    WechatScene_Session=0, //微信会话
    WechatScene_Timeline=1 //微信朋友圈
}

ePlatform

平台枚举

public enum ePlatform{
    ePlatform_None=0, //未登录
    ePlatform_Weixin=1, //微信平台
    ePlatform_QQ=2, //手Q平台
    ePlatform_WTLogin=3, //WTLogin登录
    ePlatform_QQHall=4, //手Q游戏大厅
    ePlatform_Guest=5, //游客登录
    ePlatform_Auto=6 //自动登录,使用上一次平台
    ePlatform_WeixinVideoLive=8 //微信视频号登录
}

NoticeInfo

公告信息

public class NoticeInfo{
    public String msg_id; /* 公告id */
    public String open_id; /* 用户open_id */
    public String msg_url ; /* 公告跳转链接 */
    public int msg_type ; /* 公告展示类型,滚动弹出 */
    public String msg_scene ; /* 公告展示的场景,管理端后台配置 */
    public String start_time; /* 公告有效期开始时间 */
    public String end_time ; /* 公告有效期结束时间 */
    public String update_time ; /* 公告更新时间 */
    public int content_type;/* 公告内容类型,eMSG_CONTENTTYPE */
    public int msg_order;/*公告优先级 */

    /*文本公告特殊字段 */
    public String msg_title ; /* 公告标题 */
    public String msg_content;/* 公告内容 */

    /*网页公告特殊字段 */
    public String content_url;
    public Vector<PicInfo> picArray=new Vector<PicInfo>();

    /*自定义参数*/
    public String mNoticeCustom="";
}

上报日志到bugly的日志级别

eBuglyLogLevel

public enum eBuglyLogLevel{
    eBuglyLogLevel_S=0, /* Silent */
    eBuglyLogLevel_E=1, /* Error */
    eBuglyLogLevel_W=2, /* Warnning */
    eBuglyLogLevel_I=3, /* Info */
    eBuglyLogLevel_D=4, /* Debug */
    eBuglyLogLevel_V=5, /* Verbose */
 }

eApiName

public enum eApiName{
    eApiName_WGSendToQQWithPhoto=0,
    eApiName_WGJoinQQGroup=1,
    eApiName_WGAddGameFriendToQQ=2,
    eApiName_WGBindQQGroup=3
}

eStatusType

public enum eStatusType{
    ISCREATED=0,
    ISJONINED=1
}

eRelationRetType

public enum eRelationRetType{
    eRet_QueryMyInfo=0,
    eRet_QueryGameFriends=1
}

LocalMessageIOS

public class LocalMessageIOS{
    public String fireDate { get; set; }        /*本地推送触发的时间,格式yyyy-MM-dd HH:mm:ss */
    public String alertBody { get; set; }       /*推送的内容 */
    public int badge { get; set; }              /*角标的数字 */
    public String alertAction { get; set; }     /*替换弹框的按钮文字内容(默认为"启动") */
    public List<KVPair> userInfo { get; set; }  /*自定义参数,可以用来标识推送和增加附加信息 */
    public String userInfoKey { get; set; }     /*本地推送在前台推送的标识Key */
    public String userInfoValue { get; set; }   /*本地推送在前台推送的标识Key对应的值 */

    public LocalMessageIOS(){
        fireDate="";
        alertBody="";
        alertAction="";
        userInfoKey="";
        userInfoValue="";
    }
}

LocalMessageAndroid

public class LocalMessageAndroid{
    public int type { get; set; }                   /* 消息类型type: 1:通知,2:消息 */
    public int action_type { get; set; }            /* 动作类型,1打开activity或app本身,2打开浏览器,3打开Intent ,4通过包名打开应用。默认为1 */
    public String title { get; set; }               /* 消息标题title: 消息标题 */
    public String content { get; set; }             /* 消息内容content 消息內容 */
    public String custom_content { get; set; }      /* 消息自定义内容 */
    public int icon_type { get; set; }              /* 通知栏图标是应用内图标还是上传图标(0是应用内图标,1是上传图标,默认0) */
    public int lights { get; set; }                 /* 是否呼吸灯(0否,1是,默认1) */
    public int ring { get; set; }                   /* 是否响铃(0否,1是,默认1) */
    public int vibrate { get; set; }                /* 是否振动(0否,1是,默认1) */
    public int style_id { get; set; }               /* Web端设置是否覆盖编号build_id的通知样式,默认1,0否,1是 */
    public long builderId { get; set; }             /* 消息样式,默认为0或不设置 */
    public String activity { get; set; }            /* 打开指定Activity,例如:com.qq.xgdemo.AboutActivity。当动作类型为1或4时有效 */
    public String packageDownloadUrl { get; set; }
    public String packageName { get; set; }         /* 拉起其他应用的包名,当动作类型为4时有效 */
    public String icon_res { get; set; }            /* 应用内图标文件名(xg.png)或者下载图标的url地址,例如:xg或者图片url */
    public String date { get; set; }                /* 弹出通知的日期,格式为”yyyyMMdd” */
    public String hour { get; set; }                /* 弹出通知的日期的小时数 */
    public String min { get; set; }                 /* 弹出通知的日期的分钟数 */
    public String intent { get; set; }              /* 设置打开intent,例如(10086拨号界面)intent:10086#Intent;scheme=tel;action=android.intent.action.DIAL;S.key=value;end当动作类型为3时有效 */
    public String url { get; set; }                 /* 打开url,例如:http://www.qq.com。当动作类型为2时有效 */
    public String ring_raw { get; set; }            /* 指定应用内的声音(ring.mp3),例如:ring */
    public String small_icon { get; set; }          /* 指定状态栏的小图片(xg.png),例如:xg */

    public LocalMessageAndroid(){
        type=1;
        action_type=-1;
        icon_type=-1;
        lights=-1;
        ring=-1;
        vibrate=-1;
        style_id=-1;
        builderId=-1;
        content="";
        custom_content="";
        activity="";
        packageDownloadUrl="";
        packageName="";
        icon_res="";
        date="";
        hour="";
        intent="";
        min="";
        title="";
        url="";
        ring_raw="";
        small_icon="";
    }
}

GetCountryFromIPRet

typedef struct
{
    int ret;                        // 查询结果flag, 0为成功
    std::string msg;                // 描述
    std::string country;            // 国家
    bool isQueryByRequestHeader;    // 标志是否请求头查询
} GetCountryFromIPRet;

GetIPInfoRet

typedef struct
{
    int ret;                        //查询结果flag, 0为成功
    int country_no;                 //国家编号
    int province_no;                //省份编号
    int city_no;                    //城市编号
    std::string msg;                //描述
    std::string country;            //国家
    std::string province;           //省份
    std::string city;               //城市
    bool isQueryByRequestHeader;    //标志是否请求头查询
} GetIPInfoRet;