VueH5公众号分享到微信朋友圈或好友

news2024/11/18 7:25:47
场景需求:

一般分享场景是在当前页面分享当前页面,但是业务需求是,在当前页面分享好几个其他页面的链接到朋友圈和好友。

PS:微信自带的分享面板是无法第三方唤起的,只能点三个点。

其次在微信公众号页也不支持自定义的按钮来唤起分享好友的列表。 因此只能提示用户自己去点右上方三个点来唤起!!!

解决方法: 

在点击分享后,弹出指示图片遮罩,暗地跳转到新的页面。

前期准备:

1.绑定域名

先登录微信公众平台进入"公众号设置"—>"功能设置"里填写如下的JS接口安全域名 备注:登录后可在“开发者中心”查看对应的接口权限。

ps:可能还有公众号权限、ip白名单的配置。

2.安装weixin-js-sdk
npm i weixin-js-sdk 
3.调用微信配置的文件,直接复制即可。
在utils下面新建wxShare.js
/* eslint-disable*/
import wx from "weixin-js-sdk"; //微信sdk依赖
const jsApiList = ["onMenuShareAppMessage", "onMenuShareTimeline"];
//要用到微信API
function getJSSDK(data, dataForWeixin) {
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: "wx8f663359de28f56c", // 必填,公众号的唯一标识
    timestamp: data.timestamp, // 必填,生成签名的时间戳
    nonceStr: data.nonceStr, // 必填,生成签名的随机串
    signature: data.signature, // 必填,签名
    jsApiList: jsApiList, // 必填,需要使用的JS接口列表
    success: () => {
      alert("success");
    },
  });
  wx.ready(function () {
    wx.onMenuShareAppMessage({
      title: dataForWeixin.title,
      desc: dataForWeixin.desc,
      link: dataForWeixin.link,
      imgUrl: dataForWeixin.imgUrl,
      trigger: function trigger(res) {
        // alert(111);
      },
      success: function success(res) {
        // alert('已分享');
      },
      cancel: function cancel(res) {
        // alert('已取消');
      },
      fail: function fail(res) {
        // alert('进来了');
      },
    });
    // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
    wx.onMenuShareTimeline({
      title: dataForWeixin.title,
      link: dataForWeixin.link,
      imgUrl: dataForWeixin.imgUrl,
      trigger: function trigger(res) {
        // alert(11);
        // alert('用户点击分享到朋友圈');
      },
      success: function success(res) {
        // alert('已分享');
      },
      cancel: function cancel(res) {
        //alert('已取消');
      },
      fail: function fail(res) {
        // alert(JSON.stringify(res));
      },
    });
  });
  wx.error((res) => {
    alert(stringify(res));
    console.log(JSON.stringify(res) + "微信验证失败");
  });
}
export default {
  // 获取JSSDK
  getJSSDK: getJSSDK,
};
4. 后端接口返回wx.config所需的配置信息。
5.页面调用。

关键点:

1.调用接口时的url是当前页面的url。

2.在跳转到所要分享的页面时候,不能用router.push,为了兼容ios,需要使用window.location.replace。

3.分享的图标,放置在assets下面。但是配置需要放置网络地址。当项目打包完成后所有的图片都会在dist的img文件夹里面,所以可以直接在配置时写{{域名.com/img/图片名}}。

4.如果有二维码图片的话想长按识别二维码,不能放置为背景图片,只能放做img。

5.微信公众号的H5会自带缓存,所以需要去掉缓存。在dist文件加时间戳。

在Vue.config.js里面
const version = new Date().getTime();
const mode = process.env.NODE_ENV;
const isDev = mode === "development";
在mudule.export上面

  // CSS 相关选项

  css: {
    extract: {
      // 打包后css文件名称添加时间戳
      filename: isDev ? "[name].css" : `css/[name].${version}.css`,
      chunkFilename: isDev ? "[name].css" : `css/chunk.[id].${version}.css`,
    },

    loaderOptions: {
      css: {},
      postcss: {
        plugins: [
          require("postcss-px2rem")({
            remUnit: 37.5,
          }),
        ],
      },
    },
  },

  configureWebpack: {
    output: {
      filename: isDev ? "[name].js" : `js/[name].[chunkhash:10].${version}.js`,
      chunkFilename: isDev
        ? "[name].js"
        : `js/[id].[chunkhash:10].${version}.js`,
    },
  },
import { shareWx } from "@/api/port";

  mounted() {
    this.toWxAgentShare();
  },
  methods: {
    //招募代理的分享到朋友圈
    toWxAgentShare() {
      let url = window.location.href.split("#")[0];
      shareWx({ url }).then((res) => {
        if (res.data.code == 200) {
          const { data } = res.data;
          let bankShare = {
            title: "自定义标题",
            desc: "自定义描述",
            link: `需要分享的链接?phone=${this.phone}&code=${this.code}`,
            imgUrl: "域名/img/Share.png", 分享的图片
          };
          wxShare.getJSSDK(data, bankShare);
        }
      });
    },

   toWxAgentShare() {
      window.location.replace(`${process.env.VUE_APP_H_URL}insure/bankShare`);
    },
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1233718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

影视行业如何远程完整快速传输大文件?

影视行业是一个充满创意和协作的领域。在影视制作中,涉及到多个环节和部门,包括编剧、导演、摄影、剪辑、配音、视效等。这些环节和部门通常分布在不同的地点,甚至不同的国家。因此,影视制作过程中需要频繁进行远程传输&#xff0…

如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除

想把项目的前后台代码放到同一个git仓库管理,由于未设置.gitignore,就使用vscode做stage操作(相当于git add . 命令 其中【.】点表示全部文件),观察将要入库的文件发现,node_modules、target、.idea、log等…

Django与Ajax

一、什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json…

CentOS用nginx搭建文件下载服务器

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动。在工作中,我们经常会用到需要搭建文件服务器的情况,这里就以在linux下搭…

安防视频监控平台EasyCVR服务器部署后出现报错,导致无法级联到域名服务器,该如何解决?

视频监控平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,安防监控平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控…

JavaScript 如何拷贝对像(Object)或者数组(Array)

目录 JavaScript数据拷贝类型 浅拷贝 深拷贝 举例: 浅拷贝 数组 对象 深拷贝 lodash cloneDeep使用示例 自定义深拷贝方法示例 JSON.parse() 和 JSON.stringify()使用示例 JavaScript数据拷贝类型 浅拷贝 数组可以使用Array.prototype.slice()方法 …

安卓毕业设计:基于安卓android微信小程序的超市购物系统

运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…

C++纯虚函数和抽象类 制作饮品案例(涉及知识点:继承,多态,实例化继承抽象类的子类,多文件实现项目)

一.纯虚函数的由来 在多态中&#xff0c;通常父类中虚函数的实现是毫无意义的&#xff0c;主要都是调用子类重写的内容。例如&#xff1a; #include<iostream>using namespace std;class AbstractCalculator { public:int m_Num1;int m_Num2;virtual int getResult(){r…

2023-11-20 LeetCode每日一题(最大子数组和)

2023-11-20每日一题 一、题目编号 53. 最大子数组和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的…

装机 - 12400F有必要换成13400F吗

想组个跑AI大模型的机器&#xff0c;预算5000左右。3090&#xff0c;4090玩不起&#xff0c;搞了个2080ti魔改22G的。 大佬们帮忙看看这个配置咋样&#xff0c;12400F有必要换成13400F吗。 感觉13400f多出的四个能效核除了跑分作用不大&#xff1f;网上看别人说大小核架构用win…

麒麟KYSEC使用方法03-开启及关闭netctl

原文链接&#xff1a;麒麟KYSEC使用方法03-开启及关闭netctl hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟KYLINOS的kysec使用方法系列文章第三篇内容----使用命令开启及关闭netctl&#xff0c;联网控制策略有三种模式&#xff0c;off/enforing/warning&#xff0…

VsCode连接远程Linux编译环境的便捷处理

1.免输登录密码 免输命令的正确方法是使用公钥和私鈅在研发设备&#xff0c;和linux服务器上校验身份。公钥和私钥可在windows系统上生成。公钥要发送到linux服务器。私钥需要通知给本地的ssh客户端程序&#xff0c;相关的操作如下&#xff1a; 生成 SSH Key&#xff1a; 打开…

FCOS: Fully Convolutional One-Stage Object Detection 论文源代码复现

FCOS源代码github地址为&#xff1a; FCOS 这篇论文主要是关于目标检测的&#xff0c;今天跑一下它的实验&#xff0c;我是在autodl租的RTX 2080 Ti&#xff0c;因为这个代码比较久&#xff0c;所以Pytoch版本可能不可以装太高&#xff0c;我的镜像CUDA版本为10.1&#xff0c;…

深入 Django 的 URL 分发器

概要 在 Django 的 MVC 架构中&#xff0c;URL 分发器扮演着至关重要的角色&#xff0c;它负责将用户的请求路由到相应的视图函数或类。这一机制不仅保证了 Django 应用的高度可扩展性&#xff0c;还为开发者提供了灵活的 URL 设计能力。本文将详细介绍 Django 中的 URL 分发器…

线性表,但是是Java中数组实用使用!

线性表定义&#xff1a; 由n (n≥0)个数据特性相同的元素构成的有限序列称为线性表&#xff0c;(n0)的时候被称为空表。 线性表的顺序表示 线性表的顺序存储又被称为顺序表 优点 无需为表示表中元素之间的逻辑关系而增加额外的存储空间可以随意读取任意位置的元素 缺点 插入…

手把手教你通过CODESYS V3进行PLC编程(一)

教程背景 宏集MC系列模块化控制器是基于Raspberry Pi的高性能4核控制器&#xff0c;运动控制循环时间最快可达500微秒&#xff0c;实现了计算能力和成本之间的最佳平衡&#xff0c;适用于多轴运动控制和CNC控制。 教程目的 本系列教程将使用宏集MC系列控制器&#xff0c;详细…

极空间z2pro bitwarden+frp+nginx教程

z2pro Bitwarden Frp Nginx教程 本案例仅供记录 使用时按照自己的IP和端口进行 灵活变通 本案例中使用的设备&#xff1a; NAS&#xff1a;z2pro域名&#xff1a;est.xyz云服务器&#xff1a;腾讯云&#xff08;公网ip&#xff1a;43.43.43.143&#xff09; 一&#xff0c;Va…

Unity - 实现模型动态伸长缩短,贴图不变形(材质球参数篇)

思路为修改模型材质球的Tiling参数&#xff0c;根据与自身localScale的值得到合适的比例&#xff0c;再修改Tiling值 var mat target.transform.GetComponent<Renderer>().material; var oriValue mat.mainTextureScale;//沿着Y轴伸缩 oriValue.y 1 * target.transfo…

动手学深度学习(二)---线性回归

文章目录 1.线性回归从0实现2.线性回归简洁实现【相关方法】 1.线性回归从0实现 从0开始实现整个方法&#xff0c;包括数据流水线、模型、损失函数和小批量随机梯度下降优化器 &#xff08;1&#xff09;导入需要的包 % matplotlib inline import random import torch from d…

3分钟看完NVIDIA GPU架构及演进

近期随着 AI 市场的爆发式增长&#xff0c;作为 AI 背后技术的核心之一 GPU&#xff08;图形处理器&#xff09;的价格也水涨船高。GPU 在人工智能中发挥着巨大的重要&#xff0c;特别是在计算和数据处理方面。目前生产 GPU 主流厂商其实并不多&#xff0c;主要就是 NVIDIA、AM…