第一次做 Cocos2D-JS 项目,其中涉及到微信登录游戏,使用了 AnySDK 内置的方法。
首先当用户在游戏中点击微信登录的按钮后:
onBtnWeichatClicked:function(){
cc.vv.audioMgr.playSFX('btn_click.mp3');
console.log('wechat clicked');
cc.audioEngine.stopAll();
// var self = this;
if(!cc.vv.userPlugIn){
console.log("进入加载anysdk插件进程");
var agent = anysdk.agentManager;
cc.vv.userPlugIn = agent.getUserPlugin();
cc.vv.sharePlugIn = agent.getSharePlugin();
console.log("生成cc.vv.userPlugIn");
cc.vv.userPlugIn.setListener(this.onUserLogin, this);
}else{
cc.vv.userPlugIn.login();
}
}
好吧,现在按正常的逻辑,用户第一次点击按钮,我们生成了一个 userPlugIn 并且设置了他的监听事件,而在下次点击这个按钮时候,直接执行它的 login 函数。
对应的监听事件:
onUserLogin:function(code,msg){
var self = this;
console.log("test");
switch(code){
case anysdk.UserActionResultCode.kInitSuccess:
console.log("初始化成功,开始登录");
cc.vv.userPlugIn.login();
break;
case anysdk.UserActionResultCode.kLoginSuccess:
console.log("登录成功");
cc.vv.http.sendRequest(1,"/wechat/login",cc.vv.userPlugIn.getUserInfo().toString(),this.onGetWechatCallback);
msg = JSON.parse(msg);
cc.vv.usertoken = msg.token;
cc.vv.userid = msg.id;
cc.director.loadScene(“hall”); //载入场景-大厅
cc.info(“登录成功:”+uid);
break;
case anysdk.UserActionResultCode.kLoginFail:
console.log(“登录失败”);
cc.vv.userPlugIn.logout();
cc.vv.userPlugIn.login();
break;
}
}
那么我们首先第一次点击这个登录按钮,他初始化成功之后,自动掉起了微信,但是当我们在微信中点击登录之后,微信虽然也成功的跳转回了游戏,但是却再没执行回调函数!!!WTF??
也就是说从游戏打开之后,不管我点几百万遍微信登录的按钮,在微信中点几百万遍确认登录,游戏和微信相互跳转几百万遍,onUserLogin 都只执行了一遍!啊啊啊啊啊啊…
求救!!!
补充补充:同样的代码在安卓下正常运行!!