您的位置:首页 > 移动开发 > 微信开发

常用微信集成(第三方sdk集成套路)-- 微信分享

2016-09-01 09:56 316 查看

分享

上一章我们讲到了微信登陆的集成,现在我们来看一下微信分享。

微信分享,同样遵循集成的基本流程,那就是:

包装请求(req)--> 发送请求 --> 处理请求


这个在上一章已经提到过。因为微信分享的特性,我们可以将流程进一步的精简为:

生成请求(req) --> 处理请求


我们看一下集成方法:

(1). 生成请求

在我们本地搜集好要做分享的数据后,就需要将本地数据封装成微信分享可识别的请求数据,随后通过微信建立分享链接,跳转至微信客户端进行后续步骤:

/** 标准分享 */
public static void wechatShareNormal(final Activity context, final int flag, final String title,
final String description, final String url, final String thumb) {
new Thread(new Runnable() {
@Override
public void run() {

Bitmap bmp = ImgFromNetAssistant.getUploadImage(thumb);

WXWebpageObject webpage = new WXWebpageObject(url);
WXMediaMessage msg = new WXMediaMessage();
msg.title = title;
msg.description = description;
msg.setThumbImage(bmp);
msg.mediaObject = webpage;

// 构造微信请求
final SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = flag;

// 调用API接口发送到微信
final IWXAPI wxApi = WXAPIFactory.createWXAPI(context, FirstPageConstants.WX.APP_ID);
wxApi.registerApp(FirstPageConstants.WX.APP_ID);
int scale = 10;
while (!wxApi.sendReq(req) && scale > 0 && bmp != null) {
scale -= 1;
bmp = Bitmap.createScaledBitmap(bmp, bmp.getWidth() * scale / 10, bmp.getHeight() * scale / 10, true);
msg.setThumbImage(bmp);
}
if(bmp != null)
bmp.recycle();
}
}).start();
}


因为微信分享对图片的大小有严格的限定,所以在进行数据封装的过程中,我们需要对分享用的图片大小进行检测,不合格的进行压缩。这是一个耗时的过程,需要在线程里进行。

当请求发送后,我们就需要等待微信处理结果,待返回我们App时,再进行相应的处理即可。

(2). 分享返回处理

分享结果的接受页面,同样是WXEntryActivity的onResp方法。具体的原理上一章有描述,这里就不在多说了。同样的,微信分享返回结果也是由3个状态码标识的,分别是:

BaseResp.ErrCode.ERR_OK             标识 "分享成功"
BaseResp.ErrCode.ERR_USER_CANCEL    标识 "分享取消"
BaseResp.ErrCode.ERR_USER_CANCEL    标识 "分享失败"


根据三种状态码分别做App相应的业务逻辑处理就好啦,我的demo这里是简单地弹窗提醒了:

/** 处理微信分享响应 */
private void handleShareResponse(BaseResp resp) {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
UIUtils.showToastSafe("分享成功");
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
UIUtils.showToastSafe("分享取消");
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
UIUtils.showToastSafe("分享失败");
break;
}
((Activity) context).finish();
}


不难看出,分享的流程要比登录简单多了。但是具体的集成流程的3各节点,却是一个都不少的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: