常用微信集成(第三方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各节点,却是一个都不少的。
相关文章推荐
- 常用微信集成(第三方sdk集成套路)-- 微信登录
- [置顶] 常用微信集成(第三方sdk集成套路)-- 微信支付
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- 第三方集成之社会化分享组件:新浪微博、腾讯微博、微信、人人网以及豆瓣
- 微信js-sdk,分享接口常用逻辑分装
- 安卓一键分享到qq,微信,微博,官方SDK非第三方
- 不集成QQ、微信分享官方SDK 分享方法
- 【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2
- 对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- Android:QQ分享、微信分享、朋友圈分享(不使用第三方SDK)
- 最新Android实现分享到QQ QZone 博客功能(集成官方SDK,不使用第三方)
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- 微信网页分享JS-SDK的集成使用
- 不接sdk分享到微信,微博等第三方
- iOS 单独集成qq和微信分享sdk的方法
- Android集成友盟分享SDK出现的 "微信发送被拒绝"" 的错误的处理方法
- 集成友盟第三方登录(qq、微信、微信朋友圈、新浪)、分享
- ios 单独集成qq和微信分享sdk的方法
- android studio SDK 集成 一键分享 第三方登录: