大家接过微信开放平台的SDK都应该知道,如果需要向微信发送登录或分享请求时,需要构造一个消息结构体给微信发送过去,登录的结构体类型是SendAuthReq,分享的消息结构体是SendMessageToWXReq。
同样地,在操作完后微信拉起我们自己的应用时也会有一个对应的消息结构体在onResp回调中返回给我们,通过这个resp消息对象可以拿到发这里写代码片起请求的类型以及当前请求的完成状态等。
一、Android
Android中的resp消息对象的errcode属性判断当前操作请求的状态.getType()方法可以区分当前操作请求的类型
@Override
public void onResp(BaseResp resp) {
String string;
Log.d("JavaUnity", "onResp code=" + resp.errCode);
switch (resp.errCode)
{
case BaseResp.ErrCode.ERR_OK:
switch (resp.getType()) {
case ConstantsAPI.COMMAND_SENDAUTH:
//登录成功的回调
String code=((SendAuth.Resp)resp).code;
if (((SendAuth.Resp) resp).state != null && ((SendAuth.Resp) resp).state.equals("***")) {
MainActivity.CallUnity("SDK", "LoginCallback", code);
}
break;
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
//分享成功的回调
MainActivity.CallUnity("GlobalLogic", "WXShareSucceed", "true");
break;
default:
break;
}
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
switch (resp.getType()) {
case ConstantsAPI.COMMAND_SENDAUTH:
//登录取消的回调
Log.i("JavaUnity", "登录取消");
break;
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
Log.i("JavaUnity", "分享取消");
//分享取消的回调
MainActivity.CallUnity("GlobalLogic", "WXShareSucceed", "cancle");
break;
default:
break;
}
break;
default:
switch (resp.getType()) {
case ConstantsAPI.COMMAND_SENDAUTH:
//登录失败的回调
break;
case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
//分享失败的回调
MainActivity.CallUnity("GlobalLogic", "WXShareSucceed", "false");
break;
default:
break;
}
break;
}
finish();
}
二、IOS中
在IOS中,也是可以通过resp的errCode来判断当前操作请求的状态
//微信登陆授权回调
if([resp isKindOfClass:[SendAuthResp class]])
{
SendAuthResp *rresp = (SendAuthResp*)resp;
NSLog(@"resp Errcode%d",rresp.errCode);
if(rresp.code!=nil) { //成功
// 将code(凭据)传给服务器去申请 access_token 以及 userinfo
[U3dSendMessage sendU3dMessageforCode:rresp.code];
}
else//失败
{
NSLog(@"error %@",rresp.errStr);
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"登录失败" message:[NSString stringWithFormat:@"reason : %@",rresp.errStr] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alert show];
}
}
//微信分享授权回调
else if([resp isKindOfClass:[SendMessageToWXResp class]])
{
SendMessageToWXResp *rresp = (SendMessageToWXResp*)resp;
NSLog(@"SendMessageToWXResp resp Errcode%d",rresp.errCode);
switch ((WXErrCode)rresp.errCode) {
case WXSuccess:
UnitySendMessage("GlobalLogic", "WXShareSucceed", "true");
break;
case WXErrCodeUserCancel:
UnitySendMessage("GlobalLogic", "WXShareSucceed", "cancle");
break;
default:
UnitySendMessage("GlobalLogic", "WXShareSucceed", "false");
break;
}
}

本文详细介绍了如何使用微信SDK进行登录与分享功能的实现,包括Android与iOS平台的响应处理逻辑,通过不同状态码判断登录及分享的操作结果。
1022

被折叠的 条评论
为什么被折叠?



