360SDK其他API接入
1.销毁接口【客户端调用】(必接)
在应用主Activity中,使用Matrix的destroy方法
public static void destroy(Contextcontext)
在应用主Activity的onDestroy()函数中调用,以退出登录状态并释放资源。调用完该接口后,360SDK又回到未初始化状态。
参数:
context上下文
使用例子:
@Override protected void onDestroy() { super.onDestroy(); Matrix.destroy(this); }
2.退出接口【客户端调用】(必接)
功能说明:
“退出游戏”,将直接调用退出回调函数。
接口示例及参数说明:
/** * 使用360SDK的退出接口 * * @param isLandScape 是否横屏显示支付界面 */ protected void doSdkQuit(boolean isLandScape) { Bundle bundle = new Bundle(); // 界面相关参数,360SDK界面是否以横屏显示。 bundle.putBoolean(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, isLandScape); // 可选参数,登录界面的背景图片路径,必须是本地图片路径 bundle.putString(ProtocolKeys.UI_BACKGROUND_PICTRUE, ""); // 必需参数,使用360SDK的退出模块。 bundle.putInt(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_QUIT); Intent intent = new Intent(this, ContainerActivity.class); intent.putExtras(bundle); Matrix.invokeActivity(this, intent, mQuitCallback); }
callback的 json数据格式:
进入论坛
{"which": 1,"label": "进入论坛"}
退出游戏
{"which": 2,"label": "退出游戏"}
返回按键/右上角X图标
{"which": 0,"label": "返回键/X关闭"}
callback示例:
// 退出的回调 private IDispatcherCallback mQuitCallback = new IDispatcherCallback() { @Override public void onFinished(String data) { // TODO your job } };
3.游戏角色信息上传【客户端调用】(必接)
功能说明:
采集游戏内相关数据,用于跟 CP 深度运营当前游戏。
Matrix 调用下面函数
接口示例及参数说明:
/* * @param _id 当前情景,支持 enterServer(登录),levelUp(升级),createRole(创建角色) * @param roleId 当前登录的玩家角色 ID,若无,可传入 userid * @param roleName 当前登录的玩家角色名,不能为空,不能为 null,若无,传入“游戏名称+username”, 如“皇室战争大名鼎鼎” * @param roleLevel 当前登录的玩家角色等级,必须为数字,且不能为 0,若无,传入 1 * @param zoneId 当前登录的游戏区服 ID,必须为数字,且不能为 0,若无,传入 1 * @param zoneName 当前登录的游戏区服名称,不能为空,不能为 null,若无,传入游戏名称+”1 区”,如“梦 幻西游 1 区” * @param balance 当前用户游戏币余额,必须为数字,若无,传入 0 * @param vip 当前用户 VIP 等级,必须为数字,若无,传入 1 * @param partyName 当前用户所属帮派,不能为空,不能为 null,若无,传入”无帮派” * */ public static boolean statEvent( String id, String roleId, String roleName, String roleLevel, String zoneId, String zoneName, String balance, String vip, String partyName, HashMap<String, String> mapParams )
4.打开论坛接口【客户端调用】(可选)
功能说明:
打开论坛接口,为游戏用户提供分享、吐槽的地方,能够提高游戏用户的粘性。
接口示例及参数说明:
/** * 使用360SDK的论坛接口 * * @param isLandScape 是否横屏显示支付界面 */ protected void doSdkBBS(boolean isLandScape) { Bundle bundle = new Bundle(); // 界面相关参数,360SDK界面是否以横屏显示。 bundle.putBoolean(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, isLandScape); // 必需参数,使用360SDK的论坛模块。 bundle.putInt(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_BBS); Intent intent = new Intent(this, ContainerActivity.class); intent.putExtras(bundle); Matrix.invokeActivity(this, intent, null); }
5.防沉迷查询接口【客户端调用】(可选)
功能说明:
防沉迷系统是中国法律对网游管理的要求,因此游戏必须接入防沉迷查询接口。
使用方法:
游戏方调用防沉迷查询接口,查询该用户是否已经成年。
若已成年,则允许用户正常游戏,不做任何提醒。
若未成年;或未实名注册的用户将受到防沉迷系统的限制.
未实名注册的用户,需要调用实名注册接口,要求用户进行实名注册。
开发细则:
游戏过程,会提示游戏用户的累计在线时间。
累计游戏时间超过3小时,游戏收益(经验,金钱)减半。此后,每30分钟警示一次。累计游戏时间超过5小时,游戏收益为0。此后,每15分钟警示一次。
如果未成年人的累计下线时间已满5小时,则累计在线时间清零,如再上线则重新累计在线时间。
接口示例及参数说明:
/** * 本方法中的callback实现仅用于测试, 实际使用由游戏开发者自己处理 * * @param accessToken * @param qihooUserId 奇虎360用户ID */ protected void doSdkAntiAddictionQuery(String accessToken, String qihooUserId) { Bundle bundle = new Bundle(); // 必需参数,用户access token,要使用注意过期和刷新问题,最大64字符。 bundle.putString(ProtocolKeys.ACCESS_TOKEN, accessToken); // 必需参数,360账号id。 bundle.putString(ProtocolKeys.QIHOO_USER_ID, qihooUserId); // 必需参数,使用360SDK的防沉迷查询模块。 bundle.putInt(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_ANTI_ADDICTION_QUERY); Intent intent = new Intent(this, ContainerActivity.class); intent.putExtras(bundle); Matrix.execute(this, intent, new IDispatcherCallback() { @Override public void onFinished(String data) { } } }
callback的 json数据格式:
结果返回
{"content":{"ret":[{"qid":"199062142","status":"2"}]},"error_code":"0","error_msg":""}
error_code | 0 查询成功 其他值查询失败 |
error_msg | 错误消息 |
content | json对象,包含ret数组 |
ret | json对象的数组 |
qid | 奇虎UserId |
status | 0,无此用户数据;1,未成年;2,已成年。 |
callback示例:
new IDispatcherCallback() { @Override public void onFinished(String data) { if (!TextUtils.isEmpty(data)) { try { JSONObject resultJson = new JSONObject(data); int errorCode = resultJson.optInt("error_code"); if (errorCode == 0) { JSONObject contentData = resultJson.getJSONObject("content"); if(contentData != null) { // 保存登录成功的用户名及密码 JSONArray retData = contentData.getJSONArray("ret"); if(retData != null && retData.length() > 0) { int status = retData.getJSONObject(0).optInt("status"); switch (status) { case 0: // 查询结果:无此用户数据 Toast.makeText(SdkUserBaseActivity.this, getString(R.string.anti_addiction_query_result_0), Toast.LENGTH_LONG).show(); break; case 1: // 查询结果:未成年 Toast.makeText(SdkUserBaseActivity.this, getString(R.string.anti_addiction_query_result_1), Toast.LENGTH_LONG).show(); break; case 2: // 查询结果:已成年 Toast.makeText(SdkUserBaseActivity.this, getString(R.string.anti_addiction_query_result_2), Toast.LENGTH_LONG).show(); break; default: break; } return; } } } else { Toast.makeText(SdkUserBaseActivity.this, resultJson.optString("error_msg"), Toast.LENGTH_SHORT).show(); return; } } catch (JSONException e) { e.printStackTrace(); } Toast.makeText(SdkUserBaseActivity.this, getString(R.string.anti_addiction_query_exception), Toast.LENGTH_LONG).show(); } } }
6.实名注册接口【客户端调用】(可选)
功能说明:
提供实名注册接口,当游戏方调用防沉迷查询接口时,发现用户未填写实名注册信息时,可调用该接口发起实名注册。
接口示例及参数说明:
/** * 使用360SDK实名注册接口 * * @param isLandScape 是否横屏显示登录界面 * @param qihooUserId 奇虎360用户ID */ protected void doSdkRealNameRegister(boolean isLandScape, String qihooUserId) { Bundle bundle = new Bundle(); // 界面相关参数,360SDK界面是否以横屏显示。 bundle.putBoolean(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE, isLandScape); // 必需参数,360账号id。 bundle.putString(ProtocolKeys.QIHOO_USER_ID, qihooUserId); // 可选参数,登录界面的背景图片路径,必须是本地图片路径 bundle.putString(ProtocolKeys.UI_BACKGROUND_PICTRUE, ""); // 必需参数,使用360SDK的实名注册模块。 bundle.putInt(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_REAL_NAME_REGISTER); Intent intent = new Intent(this, ContainerActivity.class); intent.putExtras(bundle); Matrix.invokeActivity(this, intent, new IDispatcherCallback() { @Override public void onFinished(String data) { } }); }
7.使用Matrix的get方法,获取基本信息
参数:
context上下文
// 获取AndroidManifest.xml中的meta-data QHOPENSDK_APPID public static String getAppId(Context context) // 获取AndroidManifest.xml中的meta-data QHOPENSDK_APPKEY public static String getAppKey(Context context) // 获取AndroidManifest.xml中的meta-data QHOPENSDK_PRIVATEKEY public static String getPrivateKey(Context context) // 获取sdk的VersionName public static String getVersionName(Context context)
8.游戏关卡信息获取【客户端调用】(可选)
功能说明:
提供在360后台配置的关卡信息获取接口,游戏接入方可以根据此接口获取在服务端配置的关卡信息
接口示例及参数说明:
/** * 本方法中的callback实现仅用于测试, 实际使用由游戏开发者自己处理 */ protected void doSdkGameLevelQuery(QihooUserInfo userInfo) { if (!checkLoginInfo(userInfo)) { return; } Bundle bundle = new Bundle(); // 必需参数,使用360SDK的游戏关卡查询 bundle.putInt(ProtocolKeys.FUNCTION_CODE, ProtocolConfigs.FUNC_CODE_GAME_LEVEL); Intent intent = new Intent(this, ContainerActivity.class); intent.putExtras(bundle); Matrix.execute(this, intent, new IDispatcherCallback() { @Override public void onFinished(String data) { if (!TextUtils.isEmpty(data)) { try { JSONObject resultJson = new JSONObject(data); int errorCode = resultJson.optInt("errno"); if (errorCode == 0) { JSONObject mData = resultJson.getJSONObject("data"); if(mData != null) { //用户关卡信息 String mContent = mData.optString("content"); if(mContent.isEmpty()){ Toast.makeText(SdkUserBaseActivity.this,"没有配置关卡信息", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(SdkUserBaseActivity.this,"关卡信息为:"+mContent, Toast.LENGTH_SHORT).show(); } return; } } else { Toast.makeText(SdkUserBaseActivity.this,data, Toast.LENGTH_SHORT).show(); return; } } catch (JSONException e) { e.printStackTrace(); } Toast.makeText(SdkUserBaseActivity.this, getString(R.string.anti_addiction_query_exception), Toast.LENGTH_LONG).show(); } } }); }