uniapp小程序中onShareAppMessage(OBJECT)实现带参数的分享功能
创始人
2024-12-10 09:33:52
0

一、引言

小程序中用户点击分享后,在 js 中定义 onShareAppMessage 处理函数(和 onLoad 等生命周期函数同级),设置该页面的分享信息。

  • 用户点击分享按钮的时候会调用。这个分享按钮可能是小程序右上角原生菜单自带的分享按钮,也可能是开发者在页面中放置的分享按钮(
  • 此事件需要 return 一个Object,用于自定义分享内容

 二、平台差异说明

AppH5微信小程序支付宝小程序百度小程序抖音小程序、飞书小程序QQ小程序快手小程序京东小程序
xxx
参数类型说明平台差异说明
fromString分享事件来源:button(页面内分享按钮)、menu(右上角分享按钮)
targetObject如果 from 值是 button,则 target 是触发这次分享事件的 button,否则为 undefined
webViewUrlString页面中包含  组件时,返回当前  的url微信小程序1.6.4+、支付宝小程序、京东小程序

此事件需要 return 一个 Object,用于自定义分享内容,其内容如下:

参数名类型必填说明平台差异说明
titleString分享标题
pathString页面 path ,必须是以 / 开头的完整路径。注意:京东小程序,开头不要加'/'QQ小程序不支持
imageUrlString分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4
contentString百度小程序表现为:分享内容;支付宝小程序表现为:吱口令文案百度小程序、支付宝小程序
descString自定义分享描述支付宝小程序、抖音小程序、京东小程序
bgImgUrlString自定义分享二维码的背景图,建议大小750*950(网络图片路径)支付宝小程序
queryStringQQ小程序查询字符串,必须是 key1=val1&key2=val2 的格式。从这条转发消息进入后,可通过 qq.getLaunchOptionSync() 或 qq.onShow() 获取启动参数中的 query。QQ小程序
templateIdString开发者后台设置的分享素材模板 id抖音小程序
mpIdString微信小程序id,此场景用于分享到微信后,用户点击分享卡片,进入该appid对应的微信小程序,实现引流到微信小程序京东小程序
typeNumber转发形式(0 - 微信小程序正式版 ;1 - 微信小程序开发版;2 - 微信小程序体验版;京东App9.0.0开始不填或者其他值都会先判断是否有url参数,如果有打开分享后显示url对应页面,否则默认生成京东小程序官方的一个分享中间页面,点击可跳到京东app里面的对应小程序。)京东小程序
mpPathString微信小程序路径京东小程序
channelString渠道(不写默认微信朋友,微信朋友圈)京东小程序
urlStringh5链接地址(h5分享填写,不填默认中间页)京东小程序
successFunction接口调用成功的回调函数支付宝小程序、百度小程序
failFunction接口调用失败的回调函数支付宝小程序、百度小程序
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)百度小程序

注意

  • 微信、头条平台:只有定义了此事件处理函数,小程序右上角菜单才会显示“转发”按钮
  • QQ小程序还支持通过qq.offShareAppMessage取消对系统分享按钮的监听

三、踩坑

问题:vue3 setup scirpt语法使用onShareAppMessage编译到微信小程序,小程序分享不生效

原因:当前onShareAppMessage其实是被全局的onShareAppMessage给覆盖了,执行顺寻是先执行的页面,再执行的全局。

ui-app issiiues: https://github.com/dcloudio/uni-app/issiiues/3084

解决方案:注冊全局的onShareAppMessage

globalShare.ts

/*  * @Author: LYM  * @Date: 2024-03-25 19:23:20  * @LastEditors: LYM  * @LastEditTime: 2024-03-26 11:39:47  * @Description: 分享  */ import { onShareAppMessage } from '@dcloudio/uni-app' import share from '@/assets/images/share-1.jpg'  export const globalShare = {   onShareAppMessage(e: any) {     if (e.from === 'button') {       return {         title: e.target.dataset.title ?? '科创知识订阅',         path: `/pages/detail/index?url=${encodeURIComponent(           e.target.dataset.url         )}`,         imageUrl: share,         success() {           debugger           uni.showToast({             title: '分享成功'           })         },         fail() {           uni.showToast({             title: '分享失败',             icon: 'none'           })         }       }     }   } } 
 

相关内容

热门资讯

7分钟透视“pokemomo辅... 7分钟透视“pokemomo辅助工具”哈糖大菠萝能开挂(必备开挂透视辅助技巧)1、哈糖大菠萝能开挂a...
第一次性普及“浙江游戏温州熟客... 第一次性普及“浙江游戏温州熟客辅助”发现作弊开挂辅助神器(总是真的有挂);亲,有的,ai轻松简单,又...
五分钟了解!胡乐安庆辅助工具,... 您好:胡乐安庆辅助工具这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
玩家亲测!广西老友玩有破解视频... 玩家亲测!广西老友玩有破解视频(透视)解说技巧(透明挂作弊开挂辅助软件)是一款可以让一直输的玩家,快...
第一分钟透视“hhpoker辅... 第一分钟透视“hhpoker辅助挂是真的”wepoker网页版透视方法(曝光开挂透视辅助攻略)进入游...
第五次性普及“凑一桌关春天游戏... 第五次性普及“凑一桌关春天游戏辅助苹果版”专业作弊开挂辅助app(从前有挂);第五次性普及“凑一桌关...
十分钟了解!随意玩app下载开... 十分钟了解!随意玩app下载开挂辅助,佛手在线大菠萝辅助,科技教程(从来真的有挂);亲,有的,ai轻...
必看攻略!约局吧德州真的存在透... 必看攻略!约局吧德州真的存在透视(透视)必备教程(大神作弊开挂辅助工具)是一款可以让一直输的玩家,快...
五分钟透视“wepoker有透... 五分钟透视“wepoker有透视”hhpoker可以开透视(解谜开挂透视辅助app)1、打开软件启动...
5次性普及“欢乐卡五星辅助工具... 5次性普及“欢乐卡五星辅助工具”介绍作弊开挂辅助app(原来真的有挂);1、许多玩家不知道欢乐卡五星...