supersdk

文档中心

文档中心

下载文档

登录模块


该模块提供了游戏上渠道必须接入的各个功能。游戏必须接入所有接口才能保证正常在渠道上架。此模块为必接模块。

接入前准备

游戏需要先阅读公共配置,并做好相关配置。

登录(必接)

接口描述:调用渠道登录接口,登录成功必定有回调,否则失败,失败不一定有回调,请注意。

注意一:游戏不能依赖登录失败的回调进行游戏逻辑处理。(部分渠道登录失败是无回调的)

注意二:解析登录成功回调的json数据,将ticket发送游戏服务端进行验证,游戏服务端验证成功即SuperSDK登录成功,详情参见登录服务端文档

在点击登录按钮后,调用 yz.invoke(‘platform’, ‘login’, “),会自动弹出登录框,登录成功会返回回调函数;

接口调用:

	// 点击登录按钮,弹出登录弹窗
	yz.invoke('platform', 'login', '')

接口回调:

	yz.SDKDataCallback = function(moduleName, funcname, parameters) {
    // 点击弹窗上的登录按钮,登录成功后的回调,登录成功code=1,code值为其他,登录失败
            if (moduleName === "platform" && funcname === "login" && JSON.parse(parameters).code == 1) {
                alert("登录成功");
                // 登录成功后,获取ticket,将ticket发送到服务端进行验证,验证成功后进入登录状态
            }
    }

日志打印:

moduleName = 'platform'
functionName ='login'
parameters = 
'{
    "code": 1,
    "data": {
        "data": {
            "uid": "19"
        },
        "msg": "登录成功",
        "osdk_ticket": "eyJvc2RrX2dhbWVfaWQiOiIxOTYzNzc1MzgiLCJ1c2VyX2lkIjoiMTkiLCJsb2dpbl9zZGtfbmFtZSI6IkRlbW8iLCJjaGFubmVsX2lkIjoiMTIzMiIsImV4dGVuZCI6IntcImV4dGVuZFwiOlwiMjE1MHw5NHwwXCIsXCJvdXRlcl9leHRlbmRcIjpcIjIxNTB8OTR8MFwifSIsImFjY291bnRfc3lzdGVtX2lkIjoiMDA2MTAwMCIsIm9zZGtfdXNlcl9pZCI6IjAwNjEwMDBfMTkiLCJpcCI6IjE5Mi4xNjguMTIyLjE0OSIsImNvdW50cnkiOiIwMCIsInRpbWUiOjE0OTg2NjczNjcsInNpZ24iOiIxOWY0MDAxYmEyYWVkMzBjMjk1NjQ5YWU1MDZkMTQyMCJ9",
        "status": 1,
        "userinfo": {
            "login_sdk_name": "Demo",
            "user_id": "19"
        }
    },
    "msg": "login success"
}'

注销(必接)

接口描述:登录成功后,注销当前登录的账号调用该接口

注意:此接口用于游戏账号切换,入口一般放在如下场景:

1、登录场景,账号登录成功显示。

2、游戏主场景,设置界面显示。

yz.invoke(‘platform’, ‘logout’, “);点击注销按钮并确认注销,注销成功后,会返回成功回调并弹出登录弹窗,用于切换账号

接口调用:

	// 点击游戏显示的注销按钮,调用注销接口
	yz.invoke('platform', 'logout', '') ;

接口回调:

	yz.SDKDataCallback = function(moduleName, funcname, parameters) {
    // 点击弹窗上的注销确认按钮,注销后返回回调,成功code=1,code值为其他,注销失败
            if (moduleName === "platform" && funcname === "logout" && JSON.parse(parameters).code == 1) {
                alert("注销成功");
				//获取到注销成功的消息后,游戏必须跳转到登录页面,让玩家重新登录
            }
    }

日志打印:

moduleName = 'platform'
functionName ='logout'
parameters = '{
        "code":1,
        "msg":"xxx"
    }'

到达登录页面(必接)

接口描述:游戏启动之后,到达登录场景之后在调用登录接口之前,需要调用yz.invoke(‘platform’, ‘openLoginPage’, “),初始化登录页面。
接口调用:

    yz.invoke('platform', 'openLoginPage', '')

进入游戏(必接)

接口描述:游戏需要在三处调用角色上报:进入游戏、创建角色、角色升级

注意:需要保证”进入游戏”事件在”创建角色”事件之前调用,游戏可能有下列两种情况:

* 先进入游戏,后创建角色。第一次进入游戏处无数据,不要上报,以后进入游戏时有数据才上报。但游戏需要在创建角色处:先调用进入游戏接口,再调用创建角色接口。

* 先创建角色,后进入游戏。创建角色时,游戏需先调用进入游戏接口,再调用创建角色接口。并且在进入游戏处不要重复调用进入游戏接口。当用户有角色时,才能在进入游戏处调用进入游戏接口。

接口调用:

var params ={};
params.role_id = "12345";        // 必传,游戏创建的角色ID
params.role_name = "获取角色名称";       // 必传,角色名称
params.level = "1";   // 必传,角色等级,必须为整形数字
params.server_id ="001";     // 必传,服务器ID
params.server_name ="东成西就"// 必传,服务器名称
params.vip_grade ="0";// 必传,角色vip,必须为数字,如VIP1,则传1
params.opSid ="1";// 必传,渠道服务器ID

//UC等渠道要求参数
params.roleCreateTime ="1498043738";//必传,创角时间,必须为服务器时间,必须为10位数字,如1498043738

//奇虎360渠道要求参数
params.professionid ="6";  // 必传,职业ID,必须为数字,如果有则必传,如果没有,请说明原因
params.profession ="武士"  // 必传,职业名称,如果有则必传,如果没有,请说明原因
params.gender ="男";         // 必传,性别,只能传"男"、"女",如果有则必传,如果没有,请说明原因
params.power = "132323000"  // 必传,战力数值,必须为数字,如果有则必传,如果没有,请说明原因
params.balance = "0";         // 必传,帐号余额,必须为数字,如果有则必传,如果没有,请说明原因
params.partyid = "120";       // 必传,所属帮派帮派ID,必须为数字,如果有则必传,如果没有,请说明原因
params.partyname ="一笑倾城" // 必传,所属帮派名称,如果有则必传,如果没有,请说明原因
params.partyroleid = "1";     // 必传,帮派称号ID,必须为数字,帮主/会长必传1,其他可自定义,如果有则必传,如果没有,请说明原因
params.partyrolename = "帮主";// 必传,帮派称号名称,如果有则必传,如果没有,请说明原因

params.friendlist = "[{\"roleid\":1,\"intimacy\":\"0\",\"nexusid\":\"600\",\"nexusname\":\"情侣\"},{\"roleid\":2,\"intimacy\":\"1\",\"nexusid\":\"200\",\"nexusname\":\"仇人\"}]"; // 必传,好友关系,如果有则必传,如果没有,请说明原因

//A站渠道要求参数
params.isNewPlayer = "true"; // 必传,是否为第一次创角,只能传"true"、"false"。

// 进入游戏接口,需要在创角接口之前调用
yz.invoke('platform', 'enterGame', params);       
       

创建角色(必接)

接口描述:游戏需要在三处调用角色上报:进入游戏、创建角色、角色升级

注意:需要保证”进入游戏”事件在”创建角色”事件之前调用,游戏可能有下列两种情况:

* 先进入游戏,后创建角色。第一次进入游戏处无数据,不要上报,以后进入游戏时有数据才上报。但游戏需要在创建角色处:先调用进入游戏接口,再调用创建角色接口。

* 先创建角色,后进入游戏。创建角色时,游戏需先调用进入游戏接口,再调用创建角色接口。并且在进入游戏处不要重复调用进入游戏接口。当用户有角色时,才能在进入游戏处调用进入游戏接口。
接口调用:

var params = {};
params.role_id = "12345";        // 必传,游戏创建的角色ID
params.role_name = "获取角色名称";       // 必传,角色名称
params.level = "1";   // 必传,角色等级,必须为整形数字
params.server_id ="001";     // 必传,服务器ID
params.server_name ="东成西就"// 必传,服务器名称
params.vip_grade ="0";// 必传,角色vip,必须为数字,如VIP1,则传1
params.opSid ="1";// 必传,渠道服务器ID

//UC等渠道要求参数
params.roleCreateTime ="1498043738";//必传,创角时间,必须为服务器时间,必须为10位数字,如1498043738

//奇虎360渠道要求参数
params.professionid ="6";  // 必传,职业ID,必须为数字,如果有则必传,如果没有,请说明原因
params.profession ="武士"  // 必传,职业名称,如果有则必传,如果没有,请说明原因
params.gender ="男";         // 必传,性别,只能传"男"、"女",如果有则必传,如果没有,请说明原因
params.power = "132323000"  // 必传,战力数值,必须为数字,如果有则必传,如果没有,请说明原因
params.balance = "0";         // 必传,帐号余额,必须为数字,如果有则必传,如果没有,请说明原因
params.partyid = "120";       // 必传,所属帮派帮派ID,必须为数字,如果有则必传,如果没有,请说明原因
params.partyname ="一笑倾城" // 必传,所属帮派名称,如果有则必传,如果没有,请说明原因
params.partyroleid = "1";     // 必传,帮派称号ID,必须为数字,帮主/会长必传1,其他可自定义,如果有则必传,如果没有,请说明原因
params.partyrolename = "帮主";// 必传,帮派称号名称,如果有则必传,如果没有,请说明原因

params.friendlist = "[{\"roleid\":1,\"intimacy\":\"0\",\"nexusid\":\"600\",\"nexusname\":\"情侣\"},{\"roleid\":2,\"intimacy\":\"1\",\"nexusid\":\"200\",\"nexusname\":\"仇人\"}]"; // 必传,好友关系,如果有则必传,如果没有,请说明原因

//A站渠道要求参数
params.isNewPlayer = "true"; // 必传,是否为第一次创角,只能传"true"、"false"。

// 创角接口,需要在进入游戏接口之后调用

SuperSDK.invoke('platform', 'createRole', params);      

角色升级(必接)

接口描述:游戏需要在三处调用角色上报:进入游戏、创建角色、角色升级

接口调用:

var params = {};
params.role_id = "12345";        // 必传,游戏创建的角色ID
params.role_name = "获取角色名称";       // 必传,角色名称
params.level = "2";   // 必传,角色等级,必须为整形数字
params.server_id ="001";     // 必传,服务器ID
params.server_name ="东成西就"// 必传,服务器名称
params.vip_grade ="0";// 必传,角色vip,必须为数字,如VIP1,则传1
params.opSid ="1";// 必传,渠道服务器ID

//UC等渠道要求参数
params.roleCreateTime ="1498043738";//必传,创角时间,必须为服务器时间,必须为10位数字,如1498043738

//奇虎360渠道要求参数
params.professionid ="6";  // 必传,职业ID,必须为数字,如果有则必传,如果没有,请说明原因
params.profession ="武士"  // 必传,职业名称,如果有则必传,如果没有,请说明原因
params.gender ="男";         // 必传,性别,只能传"男"、"女",如果有则必传,如果没有,请说明原因
params.power = "132323000"  // 必传,战力数值,必须为数字,如果有则必传,如果没有,请说明原因
params.balance = "0";         // 必传,帐号余额,必须为数字,如果有则必传,如果没有,请说明原因
params.partyid = "120";       // 必传,所属帮派帮派ID,必须为数字,如果有则必传,如果没有,请说明原因
params.partyname ="一笑倾城" // 必传,所属帮派名称,如果有则必传,如果没有,请说明原因
params.partyroleid = "1";     // 必传,帮派称号ID,必须为数字,帮主/会长必传1,其他可自定义,如果有则必传,如果没有,请说明原因
params.partyrolename = "帮主";// 必传,帮派称号名称,如果有则必传,如果没有,请说明原因

params.friendlist = "[{\"roleid\":1,\"intimacy\":\"0\",\"nexusid\":\"600\",\"nexusname\":\"情侣\"},{\"roleid\":2,\"intimacy\":\"1\",\"nexusid\":\"200\",\"nexusname\":\"仇人\"}]";// 必传,好友关系,如果有则必传,如果没有,请说明原因

//A站渠道要求参数
params.isNewPlayer = "true"; // 必传,是否为第一次创角,只能传"true"、"false"。

//调用角色升级接口
yz.invoke('platform', 'levelUp', params);

第三个参数中的level为2

到达游戏主页面(必接)

接口描述:游戏打开游戏主城,即首页时调用。每次进入游戏后到达主城时调用,仅限一次。游戏内的切换不能调用此接口,跳转到游戏内页面,立即发送两个事件。

注意一:游戏内场景切换到主场景不要调用。

注意二:如果是新用户第一次进入,一定要放在”创建角色”接口后面调用。
接口调用:

yz.invoke('platform', 'openHomePage', '');

论坛、用户中心、客服(必接)

接口描述:渠道扩展接口,调用论坛、用户中心、客服等接口会打开渠道相应的功能界面。

注意一:需判断渠道是否有论坛,用户中心,客服接口,有则需要在游戏设置界面提供相应UI入口,无则隐藏。

返回有,需要游戏在设置中,显示论坛、用户中心、客服的入口  
返回无,则需要隐藏这几个入口   

接口调用:

//是否有论坛
yz.invoke('platform', 'hasForum', '');
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
    // 如果有论坛,打开论坛
     if(moduleName === "platform" && funcname === "hasForum"){
         if(parameters){
           yz.invoke('platform', 'openForum', '');
         }else{
             alert("没有论坛");
         }
        }
     }
//是否有用户中心
yz.invoke('platform', 'hasUserCenter', '');
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
    //如果有用户中心,打开用户中心 
     if(moduleName === "platform" && funcname === "hasUserCenter"){
         if(parameters){
             yz.invoke('platform', 'openUserCenter', '');
         }else{
             alert("没有用户中心")
         }
        }
     }

//  是否有客服
yz.invoke('platform', 'hasCustomerService', '');  
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
    //如果有用户中心,打开用户中心 
     if(moduleName === "platform" && funcname === "hasCustomerService"){
         if(parameters){
              yz.invoke('platform', 'openCustomerService', '');
         }else{
             alert("没有客服")
         }
        }
     }

退出游戏(必接)

接口描述:该接口用于关闭游戏。游戏有关闭游戏按钮并且点击,或者玩家按android的返回键时调用。

注意一:海外游戏需要自己实现退出确认弹窗。

注意二:此接口必接,否则会影响渠道SDK资源销毁,导致部分渠道游戏下次无法启动。

此接口需要和游戏客户端交互,游戏可自行定义方案。这里列出推荐方案如下:

1、游戏客户端接收到退出(玩家点击返回键),调用代码:

//游戏客户端发送自定义事件
SuperJSDK.jsBack("pressBack", "");

2、游戏js端通过yz.SDKDataCallback接收到客户端上传的自定义事件,调用SuperSDK的退出接口:

//游戏js端接收到客户端发送的自定义事件后,调用SuperSDK的退出接口
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
            if (moduleName === "game" && funcname === "pressBack") {
               yz.invoke('platform', 'exit', '');//调用SuperSDK的退出接口
            }
        }

3、游戏js接收到SuperSDK的退出回调,判断code=1时通知游戏客户端退出游戏,code为其他值不做处理;

//游戏js端调用SuperSDK的退出接口后,会收到结果回调
yz.SDKDataCallback = function(moduleName, funcname, parameters) {
			//code == 1表示玩家点击了确认退出
             if (moduleName === "platform" && funcname === "exit" && JSON.parse(parameters).code == 1) {
               yz.invoke('game', 'exit', {"code":1}) ;//游戏js端发送自定义事件通知游戏客户端退出游戏
            }
        }

4、游戏客户端接收到游戏js端的自定时事件-退出游戏,执行退出游戏操作:

//以下为初始化传入的监听
private OnGameFuncListener mGameListener = new OnGameFuncListener() {
    
    @Override
    public void onEvent(String funcName, String params) {
        if("exit".equals(funcName)) {//通过funcName区分不同事件,这里是退出游戏事件
            try {
                if(new JSONObject(params).getInt("code") == 1) {//判断是否退出
                    MainActivity.this.finish();//执行退出操作
                }
            } catch (JSONException e) {
            }
        }
    }
};

日志打印:

moduleName:'game'
funcName:'pressBack'
parameters:''
moduleName:'platform'
funcName:'exit'
parameters:'{
    "code":1,
    "msg":"exit success"
    }'