本文主要和大家分享微信一次性订阅消息接入问题解析,环境都已经接入,发送 一次性订阅消息 授权:
final IWXAPI api = WXAPIFactory.createWXAPI(SettingActivity.this, response.getAppId());
// 将该app注册到微信
api.registerApp(ServerUrls.WEIXIN_APP_ID);
Log.i("20180228", "come to send request with subscribeMessage....");
SubscribeMessage.Req req = new SubscribeMessage.Req();
req.templateID = response.getTemplateId();
req.scene = 889;
// req.reserved = response.getReserved();
Log.i("20180228", "req.appId: "+response.getAppId());
Log.i("20180228", "req.templateId: "+req.templateID);
// Log.i("20180228", "req.scene: "+req.scene);
// Log.i("20180228", "req.reserved: "+req.reserved);
Log.i("20180228", "before send request: "+req.toString());
boolean sendResult = api.sendReq(req);
Log.i("20180228", "after send request: "+sendResult);
ToastUtils.show(SettingActivity.this, "发送请求结束");在授权页面的回调中做简单的处理:
@Override
public void onResp(BaseResp resp) {
Log.i("20180228", "here come to the resp with wechat request: "+resp.toString());
Log.i("20180228", "here come to the resp with wechat errCode: "+resp.errCode);
Log.i("20180228", "here come to the resp with wechat errStr: "+resp.errStr);
Log.i("20180228", "here come to the resp with wechat openId: "+resp.openId);
Log.i("20180228", "here come to the resp with wechat type: "+resp.getType());
ToastUtils.show(this, "openId: "+resp.openId);
if(resp.getType() == ConstantsAPI.COMMAND_SUBSCRIBE_MESSAGE){
Log.i("20180305", "here come to resp method successful....");
}
// if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH && resp.errCode == BaseResp.ErrCode.ERR_OK){
// ToastUtils.show(this, "request auth here ....");
// String openId = resp.openId;
// int errCode = resp.errCode;
// String errString = resp.errStr;
//
// new UserManager(this).bidnWXRSS(openId, new SimpleCallback<ApiResponse>() {
// @Override
// public void onSuccess(ApiResponse response) {
// ToastUtils.show(WXEntryActivity.this, "绑定成功!");
// finish();
// }
// });
// }
finish();
}在打开的调试打印中显示:
03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXApiImplV10: handleIntent, cmd = 4 03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXMediaMessage: pathOldToNew, oldPath = com.tencent.mm.sdk.openapi.WXAppExtendObject 03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXApiImplV10: handleWxInternalRespType, extInfo = wx_internal_resptype=subscribemessage&openid=oerX_woJRjvv8NzuUJHcKJe5PzwU&template_id=H0tXdBxs_ea5bVofycFBUPZl3hRgLWHxJIVBEYhSnxQ&action=confirm&reserved=null&scene=889 03-05 17:46:00.967 10706-10706/com.xxx I/MicroMsg.SDK.WXApiImplV10: handleWxInternalRespType, respType = null 03-05 17:46:00.967 10706-10706/com.xxx E/MicroMsg.SDK.WXApiImplV10: handleWxInternalRespType fail, respType is null
handleIntent()的时候,返回的是false,也没法调用onResp方法,其中的原因是因为上面的respType = null,但是上面发现extInfo是有数据的,并且可以看出wx_internal_resptype=subscribemessage。
这边查看WXApiImplV10.class,部分代码如下:

也就是说,这边的respType=subscribemessage,但是上面解析出来变成了null, 其中关键的代码是:

然后才明白,这边的extInfo字符串的起始处少了一个“?”,所以把extInfo解析成Uri后,就找不到指定的“wx_internal_resptype”属性了。所以页面会卡在WXEntryActivity页面没有进行下一步的操作,这边希望微信开发团队可以尽早处理!
以上就是微信一次性订阅消息接入问题解析的详细内容,更多请关注php中文网其它相关文章!
微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号