用户系统接口(Unity)

来自AnySDK 文档
跳转至: 导航搜索

用户系统接口包含登陆、注销、切换账号、平台中心、显示悬浮按钮、隐藏悬浮按钮、显示退出页、显示暂停页等渠道相关功能。

接入流程简要描述

1、使用用户系统在AnySDK初始化后必须马上设置监听类,监听回调信息。
2、捕捉到初始化完成的通知后根据需要调用登陆,参见登陆、注销
3、在进入游戏时需要调用悬浮按钮,在暂停时需要调用隐藏悬浮按钮
4、在游戏进入暂停或者游戏从后台恢复的时候,需要调用暂停页接口,参见显示暂停页
5、在退出游戏的时候,需要调用退出页接口,参见显示退出页

6、应用中需要有明显入口进入平台中心,详细 API 参见进入平台中心
7、应用中需要接入切换账号入口,详细 API 参见进入平台中心
8、在游戏销毁时调用destroy接口
9、实现特殊渠道的特殊接口

设置用户系统回调监听

用户系统存在回调信息,需要设置监听,开发者根据不同的回调实现游戏逻辑 社交系统存在回调信息,需要设置监听类以及监听方法。

AnySDKUser.getInstance () .setListener (this,"UserExternalCall");

开发者需要设置监听方法

void UserExternalCall(string msg)
{
        Debug.Log("UserExternalCall("+ msg+")");
        Dictionary<string,string> dic = AnySDKUtil.stringToDictionary (msg);
        int code = Convert.ToInt32(dic["code"]);
	string result = dic["msg"];
        switch(code)
	{
	case (int)UserActionResultCode.kInitSuccess://初始化SDK成功回调
		break;
	case (int)UserActionResultCode.kInitFail://初始化SDK失败回调
		break;
	case (int)UserActionResultCode.kLoginSuccess://登陆成功回调
		break;
	case (int)UserActionResultCode.kLoginNetworkError://登陆网络出错回调
	case (int)UserActionResultCode.kLoginCancel://登陆取消回调
	case (int)UserActionResultCode.kLoginFail://登陆失败回调
		break;
	case (int)UserActionResultCode.kLogoutSuccess://登出成功回调
		break;
	case (int)UserActionResultCode.kLogoutFail://登出失败回调
		break;
	case (int)UserActionResultCode.kPlatformEnter://平台中心进入回调
		break;
	case (int)UserActionResultCode.kPlatformBack://平台中心退出回调
		break;
	case (int)UserActionResultCode.kPausePage://暂停界面回调
		break;
	case (int)UserActionResultCode.kExitPage://退出游戏回调
		break;
	case (int)UserActionResultCode.kAntiAddictionQuery://防沉迷查询回调
		break;
	case (int)UserActionResultCode.kRealNameRegister://实名注册回调
		break;
	case (int)UserActionResultCode.kAccountSwitchSuccess://切换账号成功回调
		break;
	case (int)UserActionResultCode.kAccountSwitchFail://切换账号成功回调
		break;
	default:
		break;
	}
    }
});

注:回调过来的参数为一个字符串,其中包括(code回调状态)、msg(回调信息)需要调用AnySDKUtil.stringToDictionary (msg);获取key和value

相关接口

初始化

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

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

登陆

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(Dictionary<string,string>)

登陆参数可以传入一个Dictionary,可传入服务器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。

Dictionary<string, string> info = new Dictionary<string, string>();
info["server_id"] = "2";
info["server_url"] = "http://xxx.xxx.xxx";
info["key1"] = "value1";
info["key2"] = "value2";
AnySDKUser.getInstance().login(info);
在成功初始化插件结束后,您就可以开始调用登录接口了。
登陆回调信息
回调信息 code msg
登陆成功 kLoginSuccess 游戏服务端回传给客户端数据的ext字段
登陆失败 kLoginFail null或者错误信息的简单描述
登陆网络出错 kLoginNetworkError null或者错误信息的简单描述
登陆取消 kLoginCancel null或者错误信息的简单描述
3、当前登陆状态
bool isLogined()
您可以通过调用该函数来判断是否已经登陆。
4、获取用户唯一标示符
std::string getUserID()
用户唯一标示符

登出

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

进入平台中心

void enterPlatform();
进入平台中心的首页界面。
回调信息:
回调信息 code msg
进入平台中心 kPlatformEnter null或者错误信息的简单描述
退出平台中心 kPlatformBack null或者错误信息的简单描述
举例说明:
//调用用户系统进入平台中心功能
if( AnySDKUser.getInstance ().isFunctionSupported( "enterPlatform" ) ) {
	AnySDKUser.getInstance ().callFuncWithParam( "enterPlatform" );
}

显示悬浮工具栏

void showToolBar(ToolBarPlace place)
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;右下角
举例说明:
AnySDKParam param = new AnySDKParam((int)ToolBarPlace.kToolBarBottomLeft);
if( AnySDKUser.getInstance ().isFunctionSupported( "showToolBar" ) ) {
	AnySDKUser.getInstance ().callFuncWithParam( "showToolBar", param );
}

隐藏悬浮工具栏

void hideToolBar()
举例说明
//在暂停时隐藏悬浮按钮
if( AnySDKUser.getInstance ().isFunctionSupported( "hideToolBar" ) ) {
	AnySDKUser.getInstance ().callFuncWithParam( "hideToolBar" );
}

切换账号

void accountSwitch()
游戏方需要在游戏的菜单中添加“切换账号”的入口,方便用户切换账号。
回调信息
回调信息 code msg
切换账号成功 kAccountSwitchSuccess null或者错误信息的简单描述
切换账号失败 kAccountSwitchFail null或者错误信息的简单描述
举例说明
//用户系统调用切换账号功能
if( AnySDKUser.getInstance ().isFunctionSupported( "accountSwitch" ) ) {
	AnySDKUser.getInstance ().callFuncWithParam( "accountSwitch" );
}

退出界面

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

回调函数处理:

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

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

暂停界面

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

特殊渠道接口

实名注册

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

防沉迷查询

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返回的信息
//用户系统调用防沉迷查询
if(AnySDKUser.getInstance().isFunctionSupported("antiAddictionQuery"))
{
    AnySDKUser.getInstance().callFuncWithParam("antiAddictionQuery");
}

提交游戏数据接口

void submitLoginGameRole(Map<String, String> data)
功能说明:
把游戏数据传递到SDK服务端,例如UC、上海益玩、pps、oppo、37玩、飞流、vivo、靠谱助手、松果游戏、玉米助手等SDK需要。
接口说明:
记录了一些游戏的相关信息,开发者需要提供如下参数:
参数 是否必传 参数说明
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)
举例说明:
if(AnySDKUser.getInstance().isFunctionSupported("submitLoginGameRole"))
{
    Dictionary<string, string> map = new Dictionary<string, string>();
    map["roleId"]= "123456";
    map["roleName"]= "test";
    map["roleLevel"]= "10";
    map["zoneId"]= "123";
    map["zoneName"]= "test";
    map["dataType"]= "1";
    AnySDKParam param = new AnySDKParam(map);
    AnySDKUser.getInstance().callFuncWithParam("submitLoginGameRole",param);
}