可关注微信公众号酒酒酒酒查看原文:

前言:最近做了一款推广茶的APP软件,展厅、产品需要分享功能;从APP内分享到H5网页;微信内打开H5网页,点击微信内右上角三个点,可再次分享;

注意:大多数情况下,点击右上角三个点,再次分享后,缩略图不显示,需要做特殊处理。

废话结束,正文开始,以下页面是在H5页面中执行。

前置条件:

  1. 开发环境:windows

  2. 开发框架:uni-app , H5+,nativeJS

  3. 编辑器:HbuilderX 2.8.13

4.兼容版本:安卓,IOS已作测试

正式进入开发:

1. 首先引入微信JS-SDK

1.1 在项目的跟目录下执行npm代码:npm install jweixin-module --save

1.2 之后在main.js 里面导入JS-SDK文件,代码如下

// main.js
import Vue from 'vue'
import App from './App'
// 导入微信js-sdk
import wx from "jweixin-module";
// 挂载到Vue原型上
Vue.prototype.$wx=wx;

2. 在需要进行再次分享的h5页面做如下代码处理;

在vue的data函数中给wx.config()一个初始化的配置项

// 在vue的data函数
data() {
return {
wxConfig:{
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,企业号的唯一标识,此处填写企业号corpid
timestamp:'' , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
"onMenuShareTimeline",
"onMenuShareAppMessage"
]
}
}
}

3. 像后端人员请求 wx.config 配置项,timestamp前端人员可自己获取,也可以从后端返回

3.1 前端人员通过window.location.href获取当前页面路径,传递给后端返回配置信息

// 获取微信SDK配置信息(此方法在uni-app的onLoad里面调用)
getWxConfigInfo(){
let that=this;
// 获取当前页面路径
let url=window.location.href;
// 发起请求,向后端人员wx.config配置项
that.$http.post('Wx/getsignpackage', {url:url}, {
'load': false
}).then(function(response) {
// console.log("获取接口微信配置信息",response.data);
let data=response.data;
// 配置wxConfig配置项
that.wxConfig["appId"]=data.appId;
that.wxConfig["nonceStr"]=data.nonceStr;
that.wxConfig["signature"]=data.signature;
that.wxConfig["timestamp"]=data.timestamp;
// 监听微信分享
that.wxShare();
})
}

4. 处理H5网页在微信内二次分享就,点击右上角三个点,监听分享到朋友圈/微信好友事件

// 监听微信分享
wxShare(){
let that=this;
//that.$wx 必须执行过步骤一的操作
let wx=that.$wx;
// 获取当前域名地址
let href=window.location.href;
// 配置签名wx.config属性
wx.config(this.wxConfig);
// 发生错误触发
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
// 接口校验成功触发
wx.ready(function(){
// 判断当前客户端版本是否支持指定JS接口
wx.checkJsApi({
// 需要检测的JS接口列表
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
"onMenuShareTimeline",
"onMenuShareAppMessage"
], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
// console.log("检测接口是否可用=================",res);
},
fail(err){
// console.log("检测接口是否错误=================",err);
}
});
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
//需在用户可能点击分享按钮前就先调用(自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0))
wx.updateTimelineShareData({
title:"标题" , // 分享标题
link: "", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: "", // 分享图标,必须是https网络路径,不能大于20kb
success: function () {
// 设置成功
// uni.showToast({
// title:"分享成功",
// icon:"none"
// })
}
})
// 自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
wx.updateAppMessageShareData({
title: "标题", // 分享标题
desc: "分享描述" , // 分享描述
link:href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: "", // 分享图标,必须是https网络路径,不能大于20kb
success: function () {
// 设置成功
}
})
});
}

注意:

微信分享文档地址:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

1. 微信公众号需要配置js安全域名白名单,ip白名单

2. 缩略图必须是https网络路径,不能大于20kb,否则在安卓机h5分享的时候,缩略图不显示

3. 配置项 wx.config 里面的数据尽量从后端获取;传递当前页面的全路径,包含页面中的参数,传给给后端人员,生成配置项;

例如:http://www.u.net/h5?id=1

4. 或者可以传递当前页面的域名地址,域名地址末尾处加上"/"

例如:http://www.u.net/

笔者向后端传递的是注意事项第三点:当前页面的全路径,至于是注意事项第四点,未作测试,感兴趣的可以尝试一下。

微信H5分享外部链接,缩略图不显示的更多相关文章

  1. 微信浏览器的html5页面显示配置等问题汇集 1,禁止微信浏览器分享页面链接 (定点更新)

    公司新需求,要求从安卓IOS应用分享到微信的链接页面不允许二次转发,所以开始编程第一步,上网找资料... 网上大神就是多,不消两分钟,找到方案,很简单,上代码先: wx.config({ debug: ...

  2. 手动制作微信h5分享活动页面

    现在网上有很多自动制作h5宣传页的网站,可以通过传图,点几下鼠标就可以制作一个集动画.生产二维码等各种功能于一身的h5微信宣传页.对于运营来讲,非常方便,没有技术门槛,不足之处就是只有特定的动画效果, ...

  3. .NET微信自定义分享标题、缩略图、超链接及描述的设置方法

    前端Js引用: <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> ...

  4. 微信支付之微信H5支付(坑,ajax不支持重定向跳转)

    这里讲的是  微信h5支付,    是微信以外的手机浏览器调用微信h5支付  h5支付: H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起 ...

  5. 黄聪:详解申请微信h5支付方法,开通微信h5网页支付接口(转)

    版权声明:图文并茂的微信小程序教程!欢迎转载,请保留作者名字和链接:商业合作请联系子恒老师助理 QQ : 2334512685 https://blog.csdn.net/towtotow/artic ...

  6. 详解申请微信h5支付方法,开通微信h5网页支付接口(转)

    现在大街小巷的商家都在使用微信支付,但是一些商家使用的是个人微信收款,这个虽然很便利,但是如果你想要数据统计汇总,让客户在网络上在线付款,就需要用到微信的h5支付. 微信h5支付 今天子恒老师跟你分享 ...

  7. js-禁止微信H5页面点击右上角菜单时出现“复制链接”,且分享仅支持微信分享

    禁止微信H5页面点击右上角菜单时出现“复制链接”,这个问题已经影响到我很久很久了,起码有2年了, 昨天写H5活动的时候,需求有一个是:可分享,但是禁止复制活动链接, 这一下,就逼我务必好好研究研究了. ...

  8. H5微信自定义分享链接(设置标题+简介+图片)

    起源:最近公司在做招募广告的html5页面,然后做出来后,产品提出一个问题,需要分享出去的链接是卡片形式,内容也要自己定义,这下就难到我了,因为是第一次遇到这种需求,果断百度,然而,我就像大家一样,看 ...

  9. H5之外部浏览器唤起微信分享

    最近在做一个手机站,要求点击分享可以直接打开微信分享出去.而不是jiathis,share分享这种的点击出来二维码.在网上看了很多,都说APP能唤起微信,手机网页实现不了.也找了很多都不能直接唤起微信 ...

  10. 让淘宝链接在微信中分享,GO

    老婆开了个淘宝店,小卖家的心理大家都知道,一开始的小店总是没有光顾,吸引流量成了重中之中. 所以她到处发链接,微信里发了好多条,可是没过多久有好友微她,问她发的时什么,为什么都是打不开的.结果直接傻眼 ...

随机推荐

  1. 再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(6) —— Python版本实现的《2048》游戏环境运行性能对比

    <2048>游戏在线试玩地址: https://play2048.co/ 如何解决<2048>游戏源于外网的一个讨论帖子,而这个帖子则是讨论如何解决该游戏的最早开始,可谓是&q ...

  2. bazel编译报错:absl/base/policy_checks.h:79:2: error: #error "C++ versions less than C++14 are not supported."

    使用bazel编译一个软件时报错,报错的信息为: absl/base/policy_checks.h:79:2: error: #error "C++ versions less than ...

  3. Redis中的Hash类型常用命令

    一.hset命令作用:设置hash类型值:格式:hset key field value案例:192.168.0.111:0>hset product name 苹果"1" ...

  4. Java RMI技术详解与案例分析

    Java RMI(Remote Method Invocation)是一种允许Java虚拟机之间进行通信和交互的技术.它使得远程Java对象能够像本地对象一样被访问和操作,从而简化了分布式应用程序的开 ...

  5. 前端使用 Konva 实现可视化设计器(20)- 性能优化、UI 美化

    这一章主要分享一下使用 Konva 遇到的性能优化问题,并且介绍一下 UI 美化的思路. 至少有 2 位小伙伴积极反馈,发现本示例有明显的性能问题,一是内存溢出问题,二是卡顿的问题,在这里感谢大家的提 ...

  6. 运用Npcap库实现SYN半开放扫描

    Npcap 是一款高性能的网络捕获和数据包分析库,作为 Nmap 项目的一部分,Npcap 可用于捕获.发送和分析网络数据包.本章将介绍如何使用 Npcap 库来实现半开放扫描功能.TCP SYN 半 ...

  7. 不是 PHP 不行了,而是 MySQL 数据库扛不住啊

    大家好,我是码农先森. 大多数的业务场景下 PHP 还没有达到性能瓶颈,然而 MySQL 数据库就先行驾崩了.但我们总是不分青红皂白,一股脑的把原因归结于是 PHP 语言不行了,每当遇到这种情形我就会 ...

  8. 2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量。 按照以下规则进行n次

    2024-08-28:用go语言,给定一个从1开始.长度为n的整数数组nums,定义一个函数greaterCount(arr, val)可以返回数组arr中大于val的元素数量. 按照以下规则进行n次 ...

  9. Maven 设置 JDK 版本

    Maven 设置 JDK 版本是通过 Apache Maven Compiler Plugin 插件实现的.它用于编译项目的源代码. 方法一 有时候你可能需要将某个项目编译到与当前使用的 JDK 版本 ...

  10. draw.io 使用自定义字体

    draw.io 是我最常用的作图工具.然而,draw.io 支持的字体很少,只支持少数英文字体.不过好在 draw.io 提供了自定义选项,我们可以填入自己想要使用的字体的名称,然后 draw.io ...