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

article/2025/10/15 4:19:13

问题概述

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

基本操作流程:

操作流程项目过程:http://wiki.mob.com/android-sharesdk完整的集成文档/

大致流程就是

  1. 注册ShareSDK账户,获取app key,app screct。
  2. 注册你需要分享的所有平台信息,像QQ,微信,微博等等你必须的
  3. 在自己项目中添加应用信息
    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-shigong.com/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);}

后记

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

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

http://chatgpt.dhexx.cn/article/oT3yvOrq.shtml

相关文章

iOS ShareSDK实现分享——微信分享

最近领导让添加ios 微信分享视频的功能&#xff0c;之前做的只有微信分享本地图片的功能。 查看官网并没有找到答案&#xff0c;后来在其官网论坛中http://bbs.mob.com/thread-20938-1-1.html 这里面发现新版的sdk&#xff08;v3.2.1&#xff09;中才添加的微信分享本地文件&a…

微信分享功能

最近在做手机端页面&#xff0c;需要一个分享功能&#xff0c;其实自身分享是可以的&#xff0c;但是为了分享出的内容丰富&#xff0c;比如缩略图了&#xff0c;描述了等等&#xff0c;如下图所示&#xff1a; 步骤一&#xff1a;绑定域名 先登录微信公众平台进入“公众号…

Android app分享文件到微信

两种实现方案&#xff1a; 1.使用WXFileObject构造分享方法发送到微信&#xff1b; 2.调用系统分享方法&#xff0c;把文件直接发送到微信&#xff1b; 那么下面来分别看看怎么实现&#xff1a; 〇、准备工作 首先&#xff0c;需要在AndroidManifest.xml中配置FileProvider信…

ShareSDK关于微信分享问题

转自&#xff1a;http://www.eoeandroid.com/thread-310281-1-1.html 发现用sharesdk&#xff0c;做其他平台分享很快&#xff1b;如新浪微博、腾讯微博、有道云笔记、开心网、Google等等&#xff0c;几句代码就搞定&#xff1b; 但是微信有点麻烦&#xff0c;下面我把…

uniapp实现录音喊话功能

直接先上代码&#xff1a; const recorderManager uni.getRecorderManager() onShow() {this.test()},methods: {test() {uni.getSetting({success: (res) > {console.log(res.authSetting, res.authSetting[scope.record]);if (res.authSetting[scope.record] false) {…

h5调用android录音,html5网页录音插件Recorder

插件描述&#xff1a;html5 js 录音 mp3 wav ogg webm amr 格式&#xff0c;支持pc和Android、ios部分浏览器、和Hybrid App(提供Android IOS App源码)&#xff0c;微信也是支持的&#xff0c;提供H5版语音通话聊天示例 Recorder用于html5录音 支持大部分已实现getUserMedia的移…

利用RecordRTC.js实现H5录音功能

前言&#xff1a; 最近遇到 要语音转文字 的需求&#xff0c;语音转文字肯定要先搞定录音功能&#xff0c;在网上找了好久没找到具体的 RecordRTC.js 插件的使用方法&#xff0c;最后只能对着 github 上开源代码小试了一下&#xff0c;录音功能好使所以就记录一下叭 一、Reco…

vue录音+js-audio-recorder

小小记录一下项目中用到的录音功能 1.下载插件 npm i js-audio-recorder 2.展示代码 <template><div style"padding: 20px;"><div style"font-size:14px"><h3>录音时长&#xff1a;{{ recorder && recorder.duration.…

html 苹果微信录音js,微信js-sdk 录音功能的示例代码

需求描述 制作一个H5页面&#xff0c;打开之后可以录音&#xff0c;并将录音文件提交至后台 微信录音最长时长为1min 代码如下 // isVoice&#xff1a; 0-未录音 1-录音中 2-录完音 // 点击录音/录音中 按钮展示 点击录音 // isListen // 0-未试听/试听结束 1-试听中 2-暂停试听…

已解决:H5移动端网页实现录音功能,js实现录音功能,包括安卓webview接口也可以使用

遇到一个需求&#xff0c;需要做一个手机网页录音的功能&#xff0c;嵌入到webview中去&#xff0c;用安卓原生录音倒是可以&#xff0c;但是想着尽量去安卓化开发&#xff0c;就想着用纯的js前端代码去实现录音功能。 在 Web 应用程序中&#xff0c;JavaScript 是运行在浏览器…

网页录音时的麦克风权限问题解决

来源 | https://www.html.cn/web/html/19184.html 在我们进行网页制作时可能会遇到需要录音的情况&#xff0c;而在进行网页录音时又有可能会遇到麦克风权限问题导致无法录音&#xff0c;本文就来为大家介绍一下如何解决麦克风权限问题。 在本地中打开的时候&#xff0c;谷歌、…

获取摄像头和麦克风权限_js获取浏览器摄像头和麦克风权限

前言 项目中会使用到摄像头或麦克风设备&#xff0c;这就需要我们获取浏览器的摄像头和麦克风权限&#xff0c;权限是无法通过js操控的&#xff0c;必须由浏览器用户设置。 下面我来告诉大家如何获取浏览器的摄像头或麦克风的权限&#xff0c;使浏览器弹出询问窗口。 一、我们想…

(前端)录音功能实现 js-audio-recorder

1. 创建 import Recorder from js-audio-recorder const parameter {sampleBits: 16, // 采样位数&#xff0c;支持 8 或 16&#xff0c;默认是16sampleRate: 8000, // 采样率&#xff0c;支持 11025、16000、22050、24000、44100、48000&#xff0c;根据浏览器默认值&#x…

Android webview录音权限和音频自动播放

项目背景&#xff1a;我们通过layabox&#xff0c;制作了H5页面&#xff0c;可以在微信中&#xff0c;手机浏览器中使用&#xff0c;现在需要将H5页面集成到Android的APP中。 遇到的问题&#xff1a; 1.遇到的第一个问题&#xff0c;是获取录音权限的问题&#xff0c;我已经给…

html 苹果微信录音js,基于JS开发微信网页录音功能的实例代码

具体代码如下所示&#xff1a; wx.ready(function () { var startRecordflag false var startTime null //btnRecord 为录音按钮dom对象 btnRecord.addEventListener(touchstart, function (event) { event.preventDefault(); startTime newDate().getTime(); // 延时后录音…

std::string 与 std::wstring 互转

前言: 最近接触了一些 win32 方便的编程,由于不熟 可能会写一写这方便的基础东西 相当于 写日记了 提升一下 他们的声明 string 是 char wstring 是wchar_t 什么是wchar_t ? string 转 wstring inline std::wstring StringToWString(const std::string& str) {int len…

C++ 字符串string、字符char、宽字符数组wstring、宽字符wchar_t互相转换(2021.4.20)

C单字符串和宽字符串学习 2021.4.20 1、char 和 string1.1 单字符 char1.2 单字符数组 char[] 和 char*1.2.1 char[]1.2.2 char* 1.3 单字符串 string1.4 char[] 转 string1.5 cha[] 转char*1.6 string 转 char*1.7 string 转 char[] 2、wchar_t 和 wstring2.1 宽字符 wchar_t2…

string和wstring相互转换以及wstring显示中文问题

如果你只是使用C来处理字符串&#xff0c;会用到string。不过string是窄字符串ASCII&#xff0c;而很多Windows API函数用的是宽字符Unicode。这样让string难以应对。作为中国的程序员&#xff0c;我们第一个想到的字符串就是中文&#xff0c;而不是英文。所以经常会遇到中文字…

C++里面,什么时候使用std::wstring

看你要使用什么字符编码了&#xff0c; std::wstring主要用于 UTF-16编码的字符,而std::string主要用于存储单字节的字符( ASCII字符集 )&#xff0c;但是也可以用来保存UTF-8编码的字符。&#xff08;UTF-8和UTF-16是UNICODE字符集的两种不同的字符编码&#xff09; 如果你的…

String类与wstring类的区别

String类与wstring类的区别 本质区别 存储字符的区别 #include <iostream> #include <string> using namespace std; int main() { wstring wstr1 L"你好世界"; // L普通字符串 宽字符串 const wchar_t *ch1 wstr1.c_str(); // 转化为宽字符…