本帖最后由 106563120 于 2016-10-25 10:45 编辑
问题背景: 使用AndroidSDK的用户中心-多账号管理-退出当前账号功能后,登录另一个UCID,此时游戏对应的角色信息需要做相应更改,否则可能出现充值串号等问题。 解决方法: 在SDK 初始化时设置接收退出消息的侦听器。当用户在个人中心或者其它地方调用注销功能时,SDK 会通过该侦听器通知游戏当前登录用户已退出。使用下面方法设置退出通知侦听器,游戏应在进行SDK 初始化成功(调用initSDK 方法收到SUCCESS回调)后设置。 原生安卓:
try { UCCallbackListener<String> logoutListener = new UCCallbackListener<String>() { @Override public void callback(int statuscode, String msg) { String s = "游戏接收到用户退出通知: " + msg; }
coco2dx:
void UCSdkCallback::logout_callback(int code, const char* pszmsg) {
CCLog("received logout_callback: code=%d, msg=%s", code, pszmsg);
if (code == CUCStatusCode::SUCCESS) {
//当前登录用户已退出,应将游戏切换到未登录的状态。
UCSdk::s_logined = false;
UCSdk::s_sid = "";
CCMessageBox(pszmsg,"回调提示" );
} else {
//unknown error
CCLog("unknown error: code=%d, msg=%s", code, pszmsg);
CCMessageBox(pszmsg,"回调提示" );
}
}
Unity3D:
private void OnLogout (int code, string msg)
{
log (string.Format ("UCCallbackMessage - OnLogout: code={0}, msg={1}", code, msg));
//输出退出登录结果到页面(接入后删除)
GameMain.setSdkMessage (string.Format ("UCCallbackMessage - OnLogout: code={0}, msg={1}", code, msg));
if (code == UCStatusCode.SUCCESS) {
//当前登录用户已退出,应将游戏切换到未登录的状态。
UCConfig.logined = false;
UCGameSdk.destroyFloatButton ();
//DemoControl.Restart();
} else {
//unknown error
log (string.Format ("unknown error: code={0}, msg={1}", code, msg));
}
}
|