1. 程式人生 > >在IOS或Android區分微信的onResp(分享或登入)回撥的型別,判定當前操作是否成功

在IOS或Android區分微信的onResp(分享或登入)回撥的型別,判定當前操作是否成功

大家接過微信開放平臺的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;
            }
        }