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,权限正常且微信正常返回好友备注时,该字段才存在
}
分享信息
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;