uniapp中的分享功能实现(APP,小程序,公众号)

uniapp中的分享功能实现(APP,小程序,公众号)

1.APP端的分享

图片替换文本

app端的分享可以直接使用uniapp封装的方法uni.share,uni-app的App引擎已经封装了微信、QQ、微博的分享SDK,开发者可以直接调用相关功能。可以分享到微信、QQ、微博,每个社交平台被称为分享服务提供商,即provider。可以分享文字、图片、图文横条、音乐、视频等多种形式。同时注意,分享为小程序也使用本API。即在App里可以通过本API把一个内容以小程序(通常为内容页)方式直接分享给微信好友。直接上代码。

<!-- #ifdef APP-PLUS -->
<view class="item" @click="appShare('WXSceneSession')"><view class="iconfont icon-weixin3"></view><view class="">微信好友</view>
</view>
<view class="item" @click="appShare('WXSenceTimeline')"><view class="iconfont icon-pengyouquan"></view><view class="">微信朋友圈</view>
</view>
<!-- #endif -->appShare(scene) {let that = thislet routes = getCurrentPages(); // 获取当前打开过的页面路由数组let curRoute = routes[routes.length - 1].$page.fullPath // 获取当前页面路由,也就是最后一个打开的页面路由uni.share({provider: "weixin", //分享服务提供商(即weixin|qq|sinaweibo)scene: scene, //场景,可取值参考下面说明。type: 0, //分享形式href: `${HTTP_IP_URL}${curRoute}&spread=${that.uid}`, //跳转链接title: that.storeInfo.storeName, //分享内容的标题summary: that.storeInfo.storeInfo, //分享内容的摘要imageUrl: that.storeInfo.image, //图片地址success: function(res) {that.posters = false; //成功后关闭底部弹框},fail: function(err) {uni.showToast({title: '分享失败',icon: 'none',duration: 2000})that.posters = false;}});
},

type 值说明

说明

provider支持度

0

图文

weixin、sinaweibo

1

纯文字

weixin、qq

2

图片

weixin、qq

3

音乐

weixin、qq

4

视频

weixin、sinaweibo

5

小程序

weixin

scene 值说明

说明

WXSceneSession

分享到聊天界面

WXSenceTimeline

分享到朋友圈

WXSceneFavorite

分享到微信收藏

uni.share 在App端各社交平台分享配置说明

  1. 打开 manifest.json -> App模块权限配置,勾选 Share(分享);
  2. 按如下文档具体配置微信、微博、QQ的参数

在 manifest.json 的 App SDK 配置里,勾选微信消息及朋友圈,并填写 appid,如需在iOS平台使用还需要配置通用链接。
image

2.小程序端的分享

图片替换文本 小程序中的分享有两种,一种是通过右上角的胶囊分享,还可以通过在页面中写button,通过open-type="share"方式分享。

//onShareAppMessage 分享给朋友
//onShareTimeline  分享到朋友圈
// #ifdef MP
onShareAppMessage: function(res) {if (res.from === 'button') {// 来自页面内转发按钮console.log(res.target)}let that = this;return {title:'这是标题',imageUrl: '这是描述',path: '/pages/goods_details/index?id=' + that.id, }
},
// #endif

3.公众号的分享

图片替换文本 公众号中的分享需要使用微信的JS-SDK,可以直接下载js文件引入,也可以通过npm下载。 公众号的分享比较繁琐,我们可以将其封装一下,在需要使用的地方传入对应的title,link和jsapi,就可以简便操作。

新建wechat.js,并在main.js中将其挂载到vue的原型上

// #ifdef H5
import WechatJSSDK from "@/plugin/jweixin-module/index.js";import {getWechatConfig,wechatAuth
} from "@/api/public";
import {WX_AUTH,STATE_KEY,LOGINTYPE,BACK_URL
} from '@/config/cache';
import {parseQuery
} from '@/utils';
import store from '@/store';
import Cache from '@/utils/cache';class AuthWechat {constructor() {//微信实例化对象this.instance = WechatJSSDK;//是否实例化this.status = false;this.initConfig = {};}isAndroid(){let u = navigator.userAgent;return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;}signLink() {if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {window.entryUrl = location.href.split('#')[0]}return  /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : window.entryUrl;}/*** 初始化wechat(分享配置)*/wechat() {return new Promise((resolve, reject) => {// if (this.status && !this.isAndroid()) return resolve(this.instance);getWechatConfig().then(res => {this.instance.config(res.data);this.initConfig = res.data;this.status = true;this.instance.ready(() => {resolve(this.instance);})}).catch(err => {console.log('微信分享配置失败',err);this.status = false;reject(err);});});}/*** 验证是否初始化*/verifyInstance() {let that = this;return new Promise((resolve, reject) => {if (that.instance === null && !that.status) {that.wechat().then(res => {resolve(that.instance);}).catch(() => {return reject();})} else {return resolve(that.instance);}})}// 微信公众号的共享地址openAddress() {return new Promise((resolve, reject) => {this.wechat().then(wx => {this.toPromise(wx.openAddress).then(res => {resolve(res);}).catch(err => {reject(err);});}).catch(err => {reject(err);})});}// 获取经纬度;location(){return new Promise((resolve, reject) => {this.wechat().then(wx => {this.toPromise(wx.getLocation,{type: 'wgs84'}).then(res => {resolve(res);}).catch(err => {reject(err);});}).catch(err => {reject(err);})});} // 使用微信内置地图查看位置接口;seeLocation(config){return new Promise((resolve, reject) => {this.wechat().then(wx => {this.toPromise(wx.openLocation, config).then(res => {resolve(res);}).catch(err => {reject(err);});}).catch(err => {reject(err);})});}/*** 微信支付* @param {Object} config*/pay(config) {return new Promise((resolve, reject) => {this.wechat().then((wx) => { this.toPromise(wx.chooseWXPay, config).then(res => {resolve(res);}).catch(res => {resolve(res);});}).catch(res => {reject(res);});});}toPromise(fn, config = {}) {return new Promise((resolve, reject) => {fn({...config,success(res) {resolve(res);},fail(err) {reject(err);},complete(err) {reject(err);},cancel(err) {reject(err);}});});}/*** 自动去授权*/oAuth(snsapiBase,url) {if (uni.getStorageSync(WX_AUTH) && store.state.app.token && snsapiBase == 'snsapi_base') return;const {code} = parseQuery();if (!code || code == uni.getStorageSync('snsapiCode')){return this.toAuth(snsapiBase,url);}else{if(Cache.has('snsapiKey'))return this.auth(code).catch(error=>{uni.showToast({title:error,icon:'none'})})}}clearAuthStatus() {}/*** 授权登录获取token* @param {Object} code*/auth(code) {return new Promise((resolve, reject) => {wechatAuth(code, Cache.get("spread")).then(({data}) => {resolve(data);Cache.set(WX_AUTH, code);Cache.clear(STATE_KEY);// Cache.clear('spread');loginType && Cache.clear(LOGINTYPE);}).catch(reject);});}/*** 获取跳转授权后的地址* @param {Object} appId*/getAuthUrl(appId,snsapiBase,backUrl) {let url = `${location.origin}${backUrl}`if(url.indexOf('?') == -1){url = url+'?'}else{url = url+'&'}const redirect_uri = encodeURIComponent(`${url}scope=${snsapiBase}&back_url=` +encodeURIComponent(encodeURIComponent(uni.getStorageSync(BACK_URL) ?uni.getStorageSync(BACK_URL) :location.pathname + location.search)));uni.removeStorageSync(BACK_URL);const state = encodeURIComponent(("" + Math.random()).split(".")[1] + "authorizestate");uni.setStorageSync(STATE_KEY, state);return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=${state}#wechat_redirect`;// if(snsapiBase==='snsapi_base'){// 	return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=${state}#wechat_redirect`;// }else{// 	return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=${state}#wechat_redirect`;// }}/*** 跳转自动登录*/toAuth(snsapiBase,backUrl) {let that = this;this.wechat().then(wx => {location.href = this.getAuthUrl(that.initConfig.appId,snsapiBase,backUrl);})}/*** 绑定事件* @param {Object} name 事件名* @param {Object} config 参数*/wechatEvevt(name, config) {let that = this;return new Promise((resolve, reject) => {let configDefault = {fail(res) {if (that.instance) return reject({is_ready: true,wx: that.instance});that.verifyInstance().then(wx => {return reject({is_ready: true,wx: wx});})},success(res) {return resolve(res,2222);}};Object.assign(configDefault, config);that.wechat().then(wx => {if (typeof name === 'object') {name.forEach(item => {wx[item] && wx[item](configDefault)})} else {wx[name] && wx[name](configDefault)}})});}isWeixin() {return navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1;}
}export default new AuthWechat();
// #endif

在需要使用的地方:

// 微信分享;setOpenShare: function(data) {let that = this;if (that.$wechat.isWeixin()) {let configAppMessage = {desc: data.synopsis,title: data.title,link: location.href,imgUrl: data.img};that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],configAppMessage);}},

微信公众号环境中点击右上角三个点就可以分享,所以setOpenShare事件可以提前让他执行,如果需要通过自定义方式通过按钮点击分享,可以将setOpenShare事件放在按钮的点击事件里面。

h5示例: CRMEB-JAVA.
gitee开源地址: CRMEB-JAVA.
都看到这里了,点击上面gitee链接给个star吧

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

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

相关文章

微信小程序分享功能开发及调试方法

首先说一下使用方法如下&#xff0c;Button组件设置open-type"share"即可触发onShareAppMessage完成分享功能 <button class"toudi" open-type"share" catchtap"toujianli" data-qyuid{{[item.uid,item.id,3,item.provinceid,item…

微信小程序 分享功能

1、分享 可以分享小程序的任何一个页面给好友或群聊。注意是分享给好友或群聊&#xff0c;并没有分享到朋友圈。一方面微信在尝试流量分发方式&#xff0c;但同时又不愿意开放最大的流量入口。 开发文档&#xff1a;https://mp.weixin.qq.com/debug/wxadoc/dev/api/share.html?…

小程序一键分享html5,H5手机网站封装微信小程序并实现分享功能的教程

通过本文教程可以实现将H5手机网站直接封装成微信小程序&#xff0c;并且支持分享功能。但不支持微信支付功能。 说明&#xff1a;手机站域名必须开启https模式 第一步&#xff1a; 微信开发者工具中创建小程序&#xff0c;填写你自己的小程序AppID 第二步&#xff1a;修改app.…

uni-app 微信小程序 分享功能 传参 接收 与 调试

uni-app 微信小程序 功能 传参 接收 与 调试 当使用微信小程序进行分享好友功能时&#xff0c;怎样能够联调&#xff0c;查看是否接收到参数&#xff0c;并在被分享人点进来的时候逻辑处理是否正确。 1、分享功能实现 分享给朋友 有两种方式&#xff1a; 第一种就是 微信右上…

Python:Python编程:从入门到实践__超清版:Python标准库

Python标准库 1. OrderedDict2. threading三级目录 Python标准库是一组模块&#xff0c;按照的Python都包含了它&#xff0c;我们只需要在程序开头包含一条简单的 import 语句&#xff0c;就可以使用标准库中的任何函数和类。 下面我介绍几个重点 标准库 os : 提供一些与操作系…

JointJS+ v3.7 Crack

JointJS v3.7 改进了对 SVG 上下文中的外部对象的支持。 2023 年 5 月 30 日 - 16:00 新版本 特征 改进了对外部对象 (HTML) 的支持- 外部对象已成为 Web 开发的标准&#xff0c;JointJS 现在已经在 SVG 上下文中引入了对外部对象的全面且功能齐全的支持。这意味着您现在可以在…

ElasticSearch安装部署

ElasticSearch安装部署 简介 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 es&#xff09;是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。 Elasticsearch简称es&…

新版微头像V2.1.8版全套iApp源码

正文: 微头像 v2.1.8版全套iapp源码 1、海量头像精选&#xff0c;千万张找到最适合你的! 2、每日推荐热门头像&#xff0c;涵盖动漫、明星、二次元、可爱、等热门头像。让你瞬间焕发聊天活力! 3、提供多种分类&#xff0c;类别清晰明确&#xff0c;快速找到自己的爱好。让你…

怎样关闭qq位置定位服务器,手机qq怎么关闭定位

设置方法&#xff1a;首先打开手机QQ&#xff0c;点击“动态”——“附近”&#xff0c;点击“附近的人”右侧的漏斗图标&#xff0c;点击“清除位置信息并退出”即可完成操作。 QQ使用技巧&#xff1a;1、手机QQ可以关闭看点功能&#xff0c;首先打开手机QQ客户端&#xff0c;…

【Pytorch】DCGAN实战(三):二次元动漫头像生成

文章目录 1.实现效果2.环境配置2.1Python2.2Pytorch、CUDA2.3Python IDE 3.具体实现3.1数据预处理&#xff08;data.py&#xff09;&#xff08;1&#xff09;导入包&#xff08;2&#xff09;定义数据类 3.2模型Generator&#xff0c;Discriminator&#xff0c;权重初始化&…

【Pytorch学习】复现DCGAN训练生成动漫头像

先看一下结果&#xff1a; 1&#xff0c;环境安装指令 conda create -n pytorch python3.7 activate pytorch conda install pytorch torchvision torchaudio cudatoolkit11.3 -c pytorch pip install matplotlib pip install IPython pip install opencv-python 2&#xff0…

利用python+百度智能云为人物头像动漫化(附API代码及SDK代码)

文章目录 前言1.2、打开第一个搜索结果1.3、点击立即使用1.4、创建应用1.5、获取APPID等参数 二、API与SDK的使用1.API代码2.SDK使用2.1.首先下载python 的SDK&#xff1a;2.2.用编译软件打开aip-python-sdk-4.15.1文件夹并在aip目录下创建py文件2.3.SDK代码 总结 前言 利用py…

java基于ssm的卡通动漫网站

本系统设计为卡通动漫网站系统管理&#xff0c;主要功能是前台展示网站新闻信息&#xff0c;具有分类展示功能及在线留言和对文章的在线评论等功能&#xff0c;网站用户的注册&#xff0c;系统简介等。管理员后台的管理&#xff0c;管理员登录后台后可对现有管理员进行增加删除…

Python使用AI photo2cartoon制作属于你的漫画头像

Python使用AI photo2cartoon制作属于你的漫画头像 1. 效果图2. 原理3. 源码参考 git clone https://github.com/minivision-ai/photo2cartoon.git cd ./photo2cartoon python test.py --photo_path images/photo_test.jpg --save_path images/cartoon_result.png1. 效果图 官方…

php 照片变成卡通照片,怎么把照片做成q版卡通 照片变q版卡通人物 q版卡通头像制作...

想要把自己的头像变成真人q版卡通漫画&#xff0c;偷偷问了一个漫画家怎么制作的&#xff0c;他说用电脑手绘&#xff0c;得有画画基础才行&#xff0c;小编这下子就打了退堂鼓了&#xff0c;照片制作视频容易&#xff0c;但是自己画画太难了。有什么比较容易方法把照片做成q版…

刘诗诗吴奇隆大婚热吻头像

吴奇隆刘诗诗巴厘岛甜蜜完婚,现场布置鲜花簇拥,碧海蓝天,宛若仙境。想知道他们的两人结婚头像吗?小编为你采撷一些婚礼头像&#xff0c;重点新娘子美的不要不要的&#xff01;

Python实用案例,Python脚本实现快速卡通化人物头像,让我想起了QQ秀时光!

往期回顾 Python脚本实现天气查询应用 Python实现自动监测Github项目并打开网页 Python实现文件自动归类 Python实现帮你选择双色球号码 Python实现每日更换“必应图片”为“桌面壁纸” Python实现批量加水印 Python实现破译zip压缩包 Python实现批量下载百度图片 前言…

怎么制作真人qq秀_一分钟简单制作一个专属于自己的卡通头像

点击蓝字关注我们 制作一个专属于自己的卡通头像很简单&#xff0c;我们常用的美图秀秀软件就可以轻松制作。 首选在应用市场搜索美图秀秀下载后选择工具箱打开&#xff0c;找到实用工具中的动漫化身这个选项&#xff1b; 打开后点击绘制动漫形象&#xff0c;可以在相册中选择一…

带你读AI论文丨ACGAN-动漫头像生成

摘要&#xff1a;ACGAN-动漫头像生成是一个十分优秀的开源项目。 本文分享自华为云社区《【云驻共创】AI论文精读会&#xff1a;ACGAN-动漫头像生成》&#xff0c;作者&#xff1a;SpiderMan。 1.论文及算法介绍 1.1基本信息 • 论文题目&#xff1a;《Conditional Image Sy…

Docker镜像更新通知器DIUN

什么是 DIUN ? Docker Image Update Notifier 是一个用 Go 编写的 CLI 应用程序&#xff0c;可作为单个可执行文件和 Docker 映像交付&#xff0c;用于当 Docker 映像在 Docker registry中更新时接收通知。 和老苏之前介绍过的 watchtower 不同&#xff0c;DIUN 只是通知&…