200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用shareSDK实现微信多图分享到朋友圈Url分享到朋友圈URL分享到好友 问题记录

使用shareSDK实现微信多图分享到朋友圈Url分享到朋友圈URL分享到好友 问题记录

时间:2019-04-14 05:31:06

相关推荐

使用shareSDK实现微信多图分享到朋友圈Url分享到朋友圈URL分享到好友 问题记录

问题概述

其实第三方分享很早就有了,这个按理说这个应该没什么难度,为啥记录一下呢,因为项目中同时出现了 朋友圈多图分享(多张URL集合),朋友圈URL分享,群和个人URL,图片分享。基本上涵盖了大部分需求,这其中出现了一些问题,在此记录一下。

基本操作流程:

操作流程项目过程:/android-sharesdk完整的集成文档/

大致流程就是

注册ShareSDK账户,获取app key,app screct。注册你需要分享的所有平台信息,像QQ,微信,微博等等你必须的在自己项目中添加应用信息

1. 【优先级最高】使用ShareSDK后台直接配置

2. 【优先级中】使用代码配置"setPlatformDevInfo(String,HashMap<String,Object>)"

3. 【优先级最低】使用“assets/shareSDK.xml”文件配置app信息

多图分享效果

如果是IOS,直接多图分享到微信客户端是不支持的,而Android客户端也是需要通过不验证的方式才能通过的,你在官方文档上可以查看说明:官网说明

如果你也想设置多图分享,那么需要如下代码:

/*** 图片列表分享到微信朋友圈* @param desc* @param imageList* @param listener*/public static void shareWeChatImageListComments(String desc, String[] imageList , PlatformActionListener listener) {HashMap<String,Object> optionMap = new HashMap<>();optionMap.put("Id","5");optionMap.put("SortId","5");optionMap.put("AppId","your app id");optionMap.put("AppSecret","your app secret");optionMap.put("BypassApproval",true);optionMap.put("Enable",true);ShareSDK.setPlatformDevInfo(WechatMoments.NAME,optionMap);Platform platform = ShareSDK.getPlatform(WechatMoments.NAME);Platform.ShareParams shareParams = new Platform.ShareParams();shareParams.setText(desc);shareParams.setImageArray(imageList);shareParams.setShareType(Platform.SHARE_IMAGE);platform.setPlatformActionListener(listener);platform.share(shareParams);}

最主要的就是这个代码:

optionMap.put("BypassApproval",true);

它的意思是微信和朋友圈绕过审核的方式支持多图分享,ImageArray是String类型的数组,可传入手机本地图片路径和图片链接。

大致结果如下:

分享URL到朋友圈

如果你的app中同时存在多图朋友圈分享和URL朋友圈分享,那么此时URL分享时,BypassApproval属性需要设置成false(即必须通过审核才能分享),基本代码如下:

/*** URL分享到微信朋友圈* @param url 跳转的URL* @param imageUrl 图片上展示的URL* @param title 分享简介的title* @param content 分享简介上内容* @param mListener 分享监听器*/public static void shareWeChatMomments(String url, String imageUrl, String title, String content, PlatformActionListener mListener) {HashMap<String,Object> optionMap = new HashMap<>();optionMap.put("Id","5");optionMap.put("SortId","5");optionMap.put("AppId","your app id");optionMap.put("AppSecret","your app secret");optionMap.put("BypassApproval",false);optionMap.put("Enable",true);ShareSDK.setPlatformDevInfo(WechatMoments.NAME,optionMap);Platform platform = ShareSDK.getPlatform(WechatMoments.NAME);Platform.ShareParams shareParams = new Platform.ShareParams();shareParams.setShareType(Platform.SHARE_WEBPAGE);shareParams.setTitle(title);shareParams.setTitleUrl(url);shareParams.setText(content);shareParams.setUrl(url);shareParams.setImageUrl(imageUrl);platform.setPlatformActionListener(mListener);platform.share(shareParams);}

如果你将BypassApproval还是设置为true,那么就会产生如下异常,程序将崩溃:

URL分享到给朋友

这个原本是最简单的分享格式,但是由于我们最初为了做多图分享,在shareSDK.xml文档中对微信设置了绕开审核,即

optionMap.put("BypassApproval",true);

如下图:

然后我的分享代码是这样的:

Platform platform = ShareSDK.getPlatform(Wechat.NAME);Platform.ShareParams shareParams = new Platform.ShareParams();shareParams.setTitle("share title");shareParams.setText("share content");shareParams.setImageUrl("http://dev.e-/ic_launcher.png");shareParams.setUrl(share url);shareParams.setShareType(Platform.SHARE_WEBPAGE);platform.setPlatformActionListener(mListener);platform.share(shareParams);

然后分享出来的结果是:

我一直认为是我们的appId和AppSecret配置得有问题,后来在咨询mob相关人员之后,只需要把

optionMap.put("BypassApproval",true);该为optionMap.put("BypassApproval",false);即可。

详细代码如下:

public static void shareWebpager(String title ,String shareUrl,String shareIcon, String content ,PlatformActionListener mListener){HashMap<String,Object> optionMap = new HashMap<>();optionMap.put("Id","5");optionMap.put("SortId","5");optionMap.put("AppId","your app id ");optionMap.put("AppSecret","your app secret");optionMap.put("BypassApproval",false);optionMap.put("Enable",true);ShareSDK.setPlatformDevInfo(Wechat.NAME,optionMap);Platform platform = ShareSDK.getPlatform(Wechat.NAME);Platform.ShareParams shareParams = new Platform.ShareParams();shareParams.setTitle(title);shareParams.setText(content);shareParams.setImageUrl(shareIcon);shareParams.setUrl(shareUrl);shareParams.setShareType(Platform.SHARE_WEBPAGE);platform.setPlatformActionListener(mListener);platform.share(shareParams);}

后记

微信在做分享的时候,有几个地方比较坑,这里记录一下:

分享的类型不同,对参数的要求也不一样,一定要严格对比,否则不能调用微信客户端;你使用测试版本时,需要用到微信注册时的签名(keystore)去打包,然后分享出错;如果测试时,第一次分享使用了错误的签名,那么接下来微信都会使用错误的签名,除非你清理微信缓存和重装微信。为此,个人的建议是你测试使用模拟器测试分享,即使错误了,直接重装微信再次测试。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。