数据结构
Unity3D
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
GetCountryFromIPRet
CheckULRet
eULCheckStep
GetIPInfoRet
Android
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
GetCountryFromIPRet
GetIPInfoRet
IOS
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
GetCountryFromIPRet
CheckULRet
eULCheckStep
GetIPInfoRet
其他
数据结构
系统工具
错误码 / IOS / CallbackRet

LoginRet

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

typedef struct loginRet_ {
    int flag;               //返回标记,标识成功和失败类型
    std::string desc;       //返回描述
    int platform;           //当前登录的平台
    std::string open_id;
    std::vector<TokenRet> token;
    std::string user_id;    //用户ID,先保留,等待和微信协商
    std::string pf;
    std::string pf_key;
    std::string prajna_ext; //3.3.7新增字段
#ifdef __APPLE__
    loginRet_ ():flag(-1),platform(0){};
#endif
}LoginRet;

eMSDK_SCREENDIR

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

WGWebviewObserver

class WGWebviewObserver
{
public:
    /*! @brief Webview回调
     *
     * 将创建的操作结果通知上层App
     * @param WebviewRet 创建结果
     * @return void
     */
    virtual void OnWebviewNotify(WebviewRet& webviewRet)=0;

    virtual ~WGWebviewObserver() {};
};

WGEmbeddedWebViewObserver

class WGEmbeddedWebViewObserver
{
public:
    /**
     * js调用的回调
     * @param params 网页js接口传递过来的参数
     */
    virtual void OnJsCallback(const char* params) = 0;

    /**
     * 浏览器打开界面的进度
     * @param url 打开的url
     * @param progress 打开url的进度,范围[0,1]
     */
    virtual void OnWebProgressChanged(const char* url, float progress) = 0;

    /**
     * 浏览器关闭的回调
     */
    virtual void OnWebClose() = 0;

    virtual ~WGEmbeddedWebViewObserver() {};
};

WebviewRet

typedef struct {
    int flag;                       //0成功
    std::string msgData;  //webviewNotify中H5页面js传递给游戏的自定义的数据
}WebviewRet;

TokenRet

票据信息

typedef struct {
    int type;
    std::string value;
    long long expiration;
}

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模式下的票据
    eToken_Apple_Access, // Apple登录accessToken(支付、鉴权等使用)
    eToken_Apple_Refresh // Apple登录refreshToken(游戏不需要关心)
}
平台 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

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

typedef struct
{
    int flag;                //错误码
    int platform;               //被什么平台唤起
    std::string media_tag_name; //wx回传得meidaTagName
    std::string open_id;        //qq传递的openid
    std::string desc;           //描述
    std::string lang;          //语言     目前只有微信5.1以上用,手Q不用
    std::string country;       //国家     目前只有微信5.1以上用,手Q不用
    std::string messageExt;    //游戏分享传入自定义字符串,平台拉起游戏不做任何处理返回         目前只有微信5.1以上用,手Q不用
    std::vector<KVPair> extInfo;  //游戏-平台携带的自定义参数手Q专用
}WakeupRet;

LocationRet

地理位置信息

typedef struct {
    int flag;
    std::string desc;
    double longitude;
    double latitude;
}LocationRet;

RelationRet

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

typedef struct {
    int flag;     //查询结果flag,0为成功
    std::string desc;    // 描述
    std::vector<PersonInfo> persons;//保存好友或个人信息
    std::string extInfo; //游戏查询是传入的自定义字段,用来标示一次查询
    eRelationRetType type; //区分回调来源 0为个人信息回调 1为同玩好友回调
}RelationRet;

PersonInfo

好友信息

typedef struct {
    std::string nickName;         //昵称
    std::string openId;           //账号唯一标示
    std::string gender;           //性别
    std::string pictureSmall;     //小头像
    std::string pictureMiddle;    //中头像
    std::string pictureLarge;     //datouxiang
    std::string provice;          //省份(老版本属性,为了不让外部app改代码,没有放在AddressInfo)
    std::string city;             //城市(老版本属性,为了不让外部app改代码,没有放在AddressInfo)
    bool        isFriend;         //是否好友
    int         distance;         //离此次定位地点的距离
    std::string lang;             //语言
    std::string country;          //国家
    std::string gpsCity;          //根据GPS信息获取到的城市
    std::string friendRemark;     //仅针对于wx,权限正常且微信正常返回好友备注时,该字段才存在
}PersonInfo;

ShareRet

分享信息

typedef struct
{
    int platform;           //平台类型
    int flag;            //操作结果
    std::string desc;       //结果描述(保留)
    std::string extInfo;   //游戏分享是传入的自定义字符串,用来标示分享
}ShareRet;

GroupRet

群组信息

typedef struct {
    int flag;                       //0成功
    int errorCode;                  //平台返回参数,当flag非0时需关注
    std::string desc;               //错误信息
    int platform;                   //平台
    QQGroupInfoV2 mQQGroupInfoV2;
#ifdef __APPLE__
    WXGroupInfo wxGroupInfo;  //微信群信息
    QQGroupInfo qqGroupInfo;  // QQ群信息
#endif

#ifdef ANDROID
    WXGroupInfo mWXGroupInfo;  //微信群信息
    QQGroupInfo mQQGroupInfo;  // QQ群信息
#endif
}GroupRet;

QQGroupInfoV2

Q群信息

typedef struct {
    std::string groupName;          //群名称
    std::string fingerMemo;         //群的相关简介
    std::string memberNum;          //群成员数
    std::string maxNum;             //该群可容纳的最多成员数
    std::string ownerOpenid;        //群主openid
    std::string unionid;            //与该QQ群绑定的公会ID
    std::string zoneid;             //大区ID
    std::string adminOpenids;       //管理员openid。如果管理员有多个的话,用“,”隔开,例如0000000000000000000000002329FBEF,0000000000000000000000002329FAFF
    //群openID
    std::string groupOpenid;        //和游戏公会ID绑定的QQ群的groupOpenid
    //加群用的群key
    std::string groupKey;           //需要添加的QQ群对应的key
    std::string relation;           //用户与群的关系,1群主,2管理员,3普通成员,4非成员
}QQGroupInfo;

WXGroupInfo

微信群信息

typedef struct {
    std::string openIdList;         //群成员openId,以","分隔
    std::string memberNum;          //群成员数
    std::string chatRoomURL;        //创建(加入)群聊URL
    int status;                     //查询群状态的返回,0表示没有创建或者加群,1表示已经创建群或者加群
}WXGroupInfo;

eFlag

登录返回码

typedef enum _eFlag
{
    eFlag_QQ_MessageContentEmpty=1010,  // QQ消息为空
    eFlag_QQ_MessageContentErr=1011,    // QQ消息不可用(超长或其他)

    eFlag_WX_NotInstall=2000,               // Weixin is not installed
    eFlag_WX_NotSupportApi=2001,            // Weixin don't support api
    eFlag_WX_UserCancel=2002,               // Weixin user has cancelled
    eFlag_WX_UserDeny=2003,                 // Weixin User has deny
    eFlag_WX_LoginFail=2004,                // Weixin login fail
    eFlag_WX_RefreshTokenSucc=2005,         // Weixin 刷新票据成功
    eFlag_WX_RefreshTokenFail=2006,         // Weixin 刷新票据失败
    eFlag_WX_AccessTokenExpired=2007,       // Weixin AccessToken失效, 此时可以尝试用refreshToken去换票据
    eFlag_WX_RefreshTokenExpired=2008,      // Weixin refresh token 过期, 需要重新授权
    eFlag_WX_Group_HasNoAuthority=2009,     //游戏没有建群权限
    eFlag_WX_Group_ParameterError=2010,     //参数检查错误
    eFlag_WX_Group_HadExist=2011,           //微信群已存在
    eFlag_WX_Group_AmountBeyond=2012,       //建群数量超过上限
    eFlag_WX_Group_IDNotExist=2013,         //群ID不存在
    eFlag_WX_Group_IDHadCreatedToday=2014,  //群ID当天建群数量超限
    eFlag_WX_Group_JoinAmountBeyond=2015,   //加群数量超限
    eFlag_WX_Group_NotInGroup=2016,         //不在群中,发送群消息时若不在群中(被群主踢出群等)
    eFlag_Error=-1,
    eFlag_Local_Invalid=-2,               // 本地票据无效, 要游戏现实登陆界面重新授权
    eFlag_NotInWhiteList=-3,              // 不在白名单(for Android)
    eFlag_LbsNeedOpenLocationService=-4,  // 需要引导用户开启定位服务
    eFlag_LbsLocateFail=-5,               // 定位失败
    eFlag_UrlTooLong=-6,                  // for WGOpenUrl
    eFlag_InvalidOnGuest=-7,              // 该功能在Guest模式下不可使用(for ios)
    eFlag_NetworkError=-8,                // 网络请求出错(发送失败,超时,无回包等)
    eFlag_UnPermission=-9,                // 用户未授权关系链权限
    eFlag_IllegalParams=-10,              //非法参数

    eFlag_NeedLogin=3001,           //需要进入登陆页
    eFlag_UrlLogin=3002,            //使用URL登陆成功
    eFlag_NeedSelectAccount=3003,   //需要弹出异账号提示
    eFlag_AccountRefresh=3004,      //通过URL将票据刷新
    eFlag_NeedRealNameAuth=3005,    //中控相关返回值
    eFlag_Need_Realname_Auth=3005,  //中控相关返回值 ,兼容之前的版本的错误码(for Android)
    eFlag_Need_MSDK_Realname_Auth=3006,  // 正在进行MSDK实名认证,请忽调用游戏自定义的实名认证界面

    eFlag_Guest_AccessTokenInvalid=4001,  // Guest的票据失效(for ios)
    eFlag_Guest_LoginFailed=4002,         // Guest模式登录失败(for ios)
    eFlag_Guest_RegisterFailed=4003,      // Guest模式注册失败(for ios)

    eFlag_Checking_Token=5001,      //正在检查票据
    eFlag_Logining=5002,            //正在登录中,请等待登录回调后再操作
    eFlag_Login_Timeout=5003,       //正在登录中,请等待登录回调后再操作
    eFlag_RequestTooFrequently=5004,//调用接口太频繁

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

    //Apple 登录返回码说明
    eFlag_Apple_NotSupport=8002,          //iOS 13 以下版本不支持 Apple 登录
    eFlag_Apple_UserCancel=8003,          //用户取消
    eFlag_Apple_LoginFailed=8004,         //Apple 登录失败,具体的原因查看 des 字段 
    eFlag_Apple_AccessTokenExpired=8005,  //Apple access token 过期,需要重新登录
    eFlag_Apple_Revoked=8006,             //用户撤销了该授权,需要重新登录
    eFlag_Apple_NotFound=8007,            //用户没有对其授权
    eFlag_Apple_Unknown=8008,             //未知错误,请查看 des 字段
    eFlag_Apple_NetworkError=8009,        //网络错误

}eFlag;

``

手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技术支持人员
2014 当天建群数量超限 换个id创建
2015 加群数量超限 可更换其他账号验证
2009 没有建群权限 找产品人员开通权限。
2012 建群或者解绑群数量超过上限
2011 微信群已经存在
2013 群ID不存在
2010 参数检查错误

eQQScene

手Q场景枚举

typedef enum _eQQScene
{
    QQScene_QZone =1,//默认弹出分享到Qzone的弹框
    QQScene_Session=2,//默认弹出分享给好友的弹框
}eQQScene;

eWechatScene

微信场景枚举

typedef enum _eWechatScene
{
    WechatScene_Session =0,
    WechatScene_Timeline=1,
}eWechatScene;

ePlatform

平台枚举

typedef enum _ePlatform
{
    ePlatform_None,
    ePlatform_Weixin,
    ePlatform_QQ
#ifdef ANDROID
    ,
    ePlatform_WTLogin,
    ePlatform_QQHall
#endif

#ifdef __APPLE__
    ,
    ePlatform_Guest=5,
    ePlatform_Auto=6,
    ePlatform_Apple=7 // Apple 登录
#endif
    ePlatform_WeixinVideoLive=8 //微信视频号登录
}ePlatform;

eStatusType

typedef enum _eStatusType {
    eStatusType_ISCREATED=0,  // 查询是否建群
    eStatusType_ISJONINED=1,  // 查询是否加群
} eStatusType;

eRelationRetType

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

NoticeInfo

公告信息

typedef struct
{
    std::string msg_id;         //公告id
    std::string open_id;        //用户open_id
    std::string msg_url;        //公告跳转链接
    eMSG_NOTICETYPE msg_type;   //公告类型,eMSG_NOTICETYPE
    std::string msg_scene;      //公告展示的场景,管理端后台配置
    std::string start_time;     //公告有效期开始时间
    std::string end_time;       //公告有效期结束时间
    eMSG_CONTENTTYPE content_type;  //公告内容类型,eMSG_CONTENTTYPE
    //网页公告特殊字段
    std::string content_url;     //网页公告URL
    //图片公告特殊字段
    std::vector<PicInfo> picArray;    //图片数组
    //文本公告特殊字段
    std::string msg_title;      //公告标题
    std::string msg_content;    //公告内容
    int msg_order;      //公告优先级,越大优先级越高,MSDK2.8.0版本新增
    std::string msg_custom; //公告自定义参数
}NoticeInfo;

eBuglyLogLevel

上报日志到bugly的日志级别

typedef enum _eBuglyLogLevel
{
    eBuglyLogLevel_S=0, //Silent
    eBuglyLogLevel_E=1, //Error
    eBuglyLogLevel_W=2, //Warning
    eBuglyLogLevel_I=3, //Info
    eBuglyLogLevel_D=4, //Debug
    eBuglyLogLevel_V=5  //Verbose
}eBuglyLogLevel;

LocalMessage

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

GetCountryFromIPRet

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

CheckULRet

typedef struct sCheckULRet
{
    int step;               //检查步骤
    bool success;           // 检测是否成功
    std::string errorInfo;  //错误信息
    std::string suggestion; // 建议开发者处理方案
    sCheckULRet() {}
} CheckULRet;

eULCheckStep

typedef enum _eULCheckStep {
    eULCheckStepParams,             // 参数检查
    eULCheckStepSystemVersion,      // 当前系统版本检查
    eULCheckStepWechatVersion,      // 微信客户端版本检查
    eULCheckStepSDKInnerOperation,  // 微信SDK内部操作检查
    eULCheckStepLaunchWechat,       // App拉起微信检查
    eULCheckStepBackToCurrentApp,   // 由微信返回当前App检查
    eULCheckStepFinal,              // 最终检查
} eULCheckStep;

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;