anysdk-JS用户系统接口

来自AnySDK 文档
跳转至: 导航搜索
本文介绍的是AnySDK Framework在cocos2d-x js中,用户系统使用的各个接口。

主要流程

1:从anysdk.agentManager获取各个接口
2:调用 UserSystem 的各个方法

从AgentManager获取各个接口

AgentManager提供了获取各个子系统接口的方法。 首先要获取AgentManager,并 init 和 loadAllPlugins

//注意:这里appKey, appSecret, privateKey,要替换成自己打包工具里面的值(登录打包工具,游戏管理界面上显示的那三个参数)。
var appKey = "CED525C0-8D41-F514-96D8-90092EB3899A";
var appSecret = "a29b4f22aa63b8274f7f6e2dd5893d9b";
var privateKey = "963C4B4DA71BC51C69EB11D24D0C7D49";
var oauthLoginServer = "http://oauth.anysdk.com/api/OauthLoginDemo/Login.php";
var agent = anysdk.agentManager;
agent.init(appKey,appSecret,privateKey,oauthLoginServer);
agent.loadAllPlugins();

获取各个子系统

var user_plugin  = agent.getUserPlugin();              //用户系统
var iap_plugins   = agent.getIAPPlugin();              //支付系统
var share_plugin = agent.getSharePlugin();             //分享系统
var ads_plugin   = agent.getAdsPlugin();               //广告系统
var social_plugin = agent.getSocialPlugin();           //社交系统
var push_plugin  = agent.getPushPlugin();              //推送系统
var analytics_plugin  = agent.getAnalyticsPlugin();    //统计系统
var crash_plugin = agent.getCrashPlugin();             //崩溃分析系统
var rec_plugin = agent.getRECPlugin();                 //录屏分享系统
var custom_plugin = agent.getCustomPlugin();           //自定义系统

AgentManager还可以获取ChannelID等信息

var customParam = agent.getCustomParam();
var channelId = agent.getChannelId();

调用 UserSystem 的各个方法

设置监听:

用户系统存在回调信息,需要设置监听,实现监听方法。

user_plugin.setListener(this.onUserLogin, this);
    
onUserLogin:function(code, msg){
    cc.log("on user result action.");
    cc.log("msg:"+msg);        //
    cc.log("code:"+code);        //这里可以根据返回的 code和msg 做相应的处理
    switch(code) {
         case anysdk.UserActionResultCode.kLoginSuccess:
              //do something
              break;
    }
},

如果需要多次设置监听需要先删除之前的回调监听

user_plugin.removeListener();

初始化

在加载插件的同时已经对所有sdk进行了初始化,开发者不需要额外再进行初始化。 回调信息

回调信息 code msg
初始化成功 kInitSuccess null或者错误信息的简单描述
初始化失败 kInitFail null或者错误信息的简单描述

调用实例

switch(code)
{
case anysdk.UserActionResultCode.kInitSuccess://初始化SDK成功回调
	//sdk初始化成功,游戏相关处理
      
	break;
case anysdk.UserActionResultCode.kInitFail://初始化SDK失败回调
	//sdk初始化失败,游戏相关处理
        break;
}

登陆

1、登陆流程描述
登陆流程.jpg
1、游戏客户端调用登陆接口(向渠道平台服务器发起登录请求)
2、用户登录成功,渠道平台服务器返回认证码
3、AnySDK框架拿着认证码向游戏服务器请求登录验证
4、游戏服务器将认证码转发给AnySDK服务器
5、AnySDK服务器向渠道平台服务器进行用户登录验证
6、AnySDK服务器接收验证结果
7、AnySDK服务器将结果转发给游戏服务器
8、游戏服务器通知AnySDK框架登录验证结果
9、AnySDK框架回调给游戏客户端是否登陆成功


2、登陆函数

一定要接到初始化SDK成功回调,才可以调登录接口的函数

方法一:login();
方法二:login(info); //param:info(table)

登陆参数可以传入一个表,可传入服务器id(server_id)、登陆验证地址(server_url)和透传参数(任意key值)。
服务器id:key为server_id,服务端收到的参数名为server_id,不传则默认为1。
登陆验证地址:key为server_url,传入的地址将覆盖掉配置的登陆验证地址。
透传参数:key任意(以上两个key除外),服务端收到的参数名为server_ext_for_login,是个json字符串。
PS:AnySDK客户端【渠道参数】的【登陆验证透传参数】,服务端收到的参数名为server_ext_for_client。

var info = {
    server_id   : "2",
    server_url  : "http://xxx.xxx.xxx",
    key1        : "value1",
    key2        : "value2"
};
user_plugin.login(info);
在成功初始化插件结束后,您就可以开始调用登录接口了。
登陆回调信息
回调信息 code msg
登陆成功 kLoginSuccess 游戏服务端回传给客户端数据的ext字段
登陆失败 kLoginFail null或者错误信息的简单描述
登陆网络出错 kLoginNetworkError null或者错误信息的简单描述
登陆取消 kLoginCancel null或者错误信息的简单描述
举例说明
//调用用户系统登陆功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin) return;
user_plugin.login();
//处理回调函数	
switch(code)
{
case anysdk.UserActionResultCode.kLoginSuccess://登陆成功回调
//登陆成功后,游戏相关处理
     break;
case anysdk.UserActionResultCode.kLoginNetworkError://登陆网络出错回调
case anysdk.UserActionResultCode.kLoginCancel://登陆取消回调
case anysdk.UserActionResultCode.kLoginFail://登陆失败回调
//登陆失败后,游戏相关处理
	break;
}
3、当前登陆状态
isLogined() //return bool
您可以通过调用该函数来判断是否已经登陆。
4、获取用户唯一标示符
getUserID() //return string
用户唯一标示符

登出

logout();
注销账号分两种,一种是由开发者在任何场景调用,用来注销当前的登录账号;另一种是由玩家在平台界面里面选择注销当前的账号。
登出回调信息
回调信息 code msg
登出成功 kLogoutSuccess null或者错误信息的简单描述
登出失败 kLogoutFail null或者错误信息的简单描述
举例说明:

新版接口:

//调用用户系统登出功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.logout) return;
user_plugin.logout();

旧版接口:

//调用用户系统登出功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("logout")) return;
user_plugin.callFuncWithParam("logout");


//处理回调函数	
switch(code)
{
case anysdk.UserActionResultCode.kLogoutSuccess://用户登出成功回调
//登出成功,游戏相关操作
	break;
case anysdk.UserActionResultCode.kLogoutFail://平台中心退出回调
//登出失败,游戏相关操作
	break;

}

进入平台中心

void enterPlatform();
进入平台中心的首页界面。
回调信息:
回调信息 code msg
进入平台中心 kPlatformEnter null或者错误信息的简单描述
退出平台中心 kPlatformBack null或者错误信息的简单描述
举例说明:

新版接口:

//调用用户系统进入平台中心功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.enterPlatform) return;
user_plugin.enterPlatform();

旧版接口:

//调用用户系统进入平台中心功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("enterPlatform")) return;
user_plugin.callFuncWithParam("enterPlatform");


//处理回调函数	
switch(code)
{
case anysdk.UserActionResultCode.kPlatformEnter://平台中心进入回调
	break;
case anysdk.UserActionResultCode.kPlatformBack://平台中心退出回调
	break;

}

显示悬浮工具栏

showToolBar(place) //param:place(ToolBarPlace)
place: 浮动工具栏初始位置,仅第一次进入时有效,之后工具栏会显示在用户最后一 次停留的位置,共有 6 个值可以设置。
对应的状态码 描述
ToolBarPlace.kToolBarTopLeft value=1;左上角
ToolBarPlace.kToolBarTopRight value=2;右上角
ToolBarPlace.kToolBarMidLeft value=3;左边中间
ToolBarPlace.kToolBarMidRight value=4;右边中间
ToolBarPlace.kToolBarBottomLeft value=5;左下角
ToolBarPlace.kToolBarBottomRight value=6;右下角
举例说明:

新版接口:

var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.showToolBar) return;
user_plugin.showToolBar(pos);

旧版接口:

var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("showToolBar")) return;
var paramInfo = anysdk.PluginParam.create(place);
user_plugin.callFuncWithParam("showToolBar",paramInfo);

隐藏悬浮工具栏

hideToolBar()
举例说明

新版接口:

//在暂停时隐藏悬浮按钮
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.hideToolBar) return;
user_plugin.hideToolBar();

旧版接口:

//在暂停时隐藏悬浮按钮
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("hideToolBar")) return;
user_plugin.callFuncWithParam("hideToolBar");

切换账号

accountSwitch()
游戏方需要在游戏的菜单中添加“切换账号”的入口,方便用户切换账号。
回调信息
回调信息 code msg
切换账号成功 kAccountSwitchSuccess null或者错误信息的简单描述
切换账号失败 kAccountSwitchFail null或者错误信息的简单描述
举例说明

新版接口:

//用户系统调用切换账号功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.accountSwitch) return;
user_plugin.accountSwitch();

旧版接口:

//用户系统调用切换账号功能
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("accountSwitch")) return;
user_plugin.callFuncWithParam("accountSwitch");


//处理回调函数	
switch(code)
{
case anysdk.UserActionResultCode.kAccountSwitchSuccess://切换账号成功回调
//切换账号成功,游戏相关操作
	break;
case anysdk.UserActionResultCode.kAccountSwitchFail://切换账号失败回调
//切换账号失败,游戏相关操作
	break;

}

退出界面

exit()
游戏退出时调用该函数。
注意:部分渠道SDK要求必须显示渠道的退出界面,例如在返回键或游戏退出按钮调用此接口。
回调信息
回调信息 code msg
确认退出游戏 kExitPage null或者错误信息的简单描述
举例说明:

新版接口:

//判断是否点击返回键
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.exit) return;
user_plugin.exit();

旧版接口:

//判断是否点击返回键
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("exit")) return;
user_plugin.callFuncWithParam("exit");


回调函数处理:

//处理回调函数	
switch(code)
{
case anysdk.UserActionResultCode.kExitPage:
    if(msg == "onGameExit" || msg == "onNo3rdExiterProvide")
    {
        //弹出游戏退出界面
    }
    else
    {
        //执行游戏退出逻辑
    }
    break;
case anysdk.UserActionResultCode.kGameExitPage:
    //弹出游戏退出界面
    break;
}

PS:个别SDK有游戏退出和渠道退出两个回调,请在msg为"onGameExit"(豌豆荚)或"onNo3rdExiterProvide"(有米)弹出游戏退出界面,以后将改成新加的回调code。

暂停界面

pause()
游戏暂停时调用该函数(目前好像除了Android百度游戏单机、iOS百度91,没有别的SDK有这个了)。
回调信息
回调信息 code msg
关闭暂停界面 kPausePage null或者错误信息的简单描述
举例说明:

新版接口:

var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.pause) return;
user_plugin.pause();

旧版接口:

var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("pause")) return;
user_plugin.callFuncWithParam("pause");

onActionResult 的返回值参考

  
// for user action result code
var UserActionResultCode = {
    kInitSuccess:0,		/**< enum value is callback of succeeding in initing sdk. */
    kInitFail:1,		/**< enum  value is callback of failing to init sdk. */
    kLoginSuccess:2,	/**< enum value is callback of succeeding in login.*/
    kLoginNetworkError:3,	/**< enum value is callback of network error*/
    kLoginNoNeed:4,		/**< enum value is callback of no need login.*/
    kLoginFail:5,		/**< enum value is callback of failing to login. */
    kLoginCancel:6,		/**< enum value is callback of canceling to login. */
    kLogoutSuccess:7,	/**< enum value is callback of succeeding in logout. */
    kLogoutFail:8,		/**< enum value is callback of failing to logout. */
    kPlatformEnter:9,	/**< enum value is callback after enter platform. */
    kPlatformBack:10,	/**< enum value is callback after exit antiAddiction. */
    kPausePage:11,		/**< enum value is callback after exit pause page. */
    kExitPage:12,		/**< enum value is callback after exit exit page. */
    kAntiAddictionQuery:13,	/**< enum value is callback after querying antiAddiction. */
    kRealNameRegister:14,	/**< enum value is callback after registering realname. */
    kAccountSwitchSuccess:15,	/**< enum alue is callback of succeeding in switching account. */
    kAccountSwitchFail:16	/**< enum value is callback of failing to switch account. */
};

特殊渠道接口

实名注册

realNameRegister()
功能说明:
提供实名注册接口,当游戏方调用防沉迷查询接口时,发现用户未填写实名注册信息时,可调用该 接口发起实名注册。例如:360、华为、联想。
回调信息
回调信息 code msg
实名注册回调 kRealNameRegister 实名注册结果
结果返回 msg
{"status":"success",msg:""}
字段 描述
status success成功,cancel取消,fail失败
msg SDK返回的信息

PS:360的回调信息还没统一格式。 新版接口:

//用户系统调用实名注册
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.realNameRegister) return;
user_plugin.realNameRegister();

旧版接口:

//用户系统调用实名注册
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("realNameRegister")) return;
user_plugin.callFuncWithParam("realNameRegister");


//处理回调函数
switch(code)
{
case anysdk.UserActionResultCode.kRealNameRegister:///实名注册回调
	//实名注册回调,游戏相关操作
	break;
}

防沉迷查询

void antiAddictionQuery()
功能说明:
防沉迷系统是中国法律对网游管理的要求,因此游戏必须接入防沉迷查询和实名注册接口。 使用方法:游戏方调用防沉迷查询接口,查询该用户是否已经成年。例如:360、百度、华为、联想。
1、若已成年,则允许用户正常游戏,不做任何提醒。
2、若未成年;或未实名注册的用户将受到防沉迷系统的限制.
开发细则:
游戏过程,会提示游戏用户的累计在线时间。
累计游戏时间超过 3 小时,游戏收益(经验,金钱)减半。此后,每 30 分钟警示一次。累计游戏 时间超过 5 小时,游戏收益为 0。此后,每 15 分钟警示一次。
如果未成年人的累计下线时间已满 5 小时,则累计在线时间清零,如再上线则重新累计在线时间。 详细开发标准请参考:http://baike.baidu.com/view/3615996.htm
接口说明:
防沉迷查询接口可查询用户当前的防沉迷状态,0 为无用户信息,此时需要调用实名注册接口,要求用户进行实名注册。若用户不进行实名注册,则同样视为未满 18 岁的用户,要 受到防沉迷系统的限制。
1 为未成年,当游戏时长达到警戒状态时,需要出防沉迷提示; 2 为已成年,不受防沉迷系统的干扰。
回调信息
回调信息 code msg
防沉迷查询结果回调 kAntiAddictionQuery 防沉迷查询结果
结果返回 msg
{"status":"success","result":"0","msg":""}
字段 描述
status success成功,fail失败
result 0无此用户数据,1未成年,2已成年
msg SDK返回的信息

新版接口:

//用户系统调用防沉迷查询
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.antiAddictionQuery) return;
user_plugin.antiAddictionQuery();

旧版接口:

//用户系统调用防沉迷查询
var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("antiAddictionQuery")) return;
user_plugin.callFuncWithParam("antiAddictionQuery");


//处理回调函数
switch(code)
{
case anysdk.UserActionResultCode.kAntiAddictionQuery:///防沉迷回调
	//防沉迷回调,游戏相关操作
	break;
}

提交游戏数据接口

void submitLoginGameRole(StringMap *data)
功能说明:
把游戏数据传递到SDK服务端,例如UC、上海益玩、pps、oppo、37玩、飞流、vivo、靠谱助手、松果游戏、玉米助手等SDK需要。
接口说明:
参数为StringMap,Map里面的数据必须为字符串。
StringMap实际上是一个map,记录了一些游戏的相关信息,开发者需要提供如下参数:
参数 是否必传 参数说明
dataType Y 数据类型,1为进入游戏,2为创建角色,3为角色升级,4为退出
roleId Y 角色ID
roleName Y 角色名称
roleLevel Y 角色等级
zoneId Y 服务器ID
zoneName Y 服务器名称
balance Y 用户余额(RMB购买的游戏币)
partyName Y 帮派、公会等,没有填空字符串
vipLevel Y Vip等级,没有vip系统的传0
roleCTime Y 角色创建时间(单位:秒)(历史角色没记录时间的传-1,新创建的角色必须要)
roleLevelMTime Y 角色等级变化时间(单位:秒)(创建角色和进入游戏时传-1)
举例说明:

新版接口:

var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.submitLoginGameRole) return;
var data = {
    roleId    : "123456",
    roleName  : "test",
    roleLevel : "10",
    zoneId    : "123",
    zoneName  : "test",
    dataType  : "1",
}
user_plugin.submitLoginGameRole(data);

旧版接口:

var user_plugin = agent.getUserPlugin();
if(!user_plugin || !user_plugin.isFunctionSupported("submitLoginGameRole")) return;
var userInfo= {
    roleId    : "123456",
    roleName  : "test",
    roleLevel : "10",
    zoneId    : "123",
    zoneName  : "test",
    dataType  : "1",
}
var data = anysdk.PluginParam.create(userInfo);
user_plugin.callFuncWithParam("submitLoginGameRole", data);