使用uni-share插件实现APP页面分享

21682次阅读 1277人点赞 作者: WuBin 发布时间: 2022-08-18 11:25:56
扫码到手机查看

插件封装

首先先下载插件:

https://ext.dcloud.net.cn/plugin?id=4860#detail

从官方插件地址可以看到,本插件只支持APP下的分享功能。

可以使用HX直接下载插件,下载的插件会默认安装在“根目录/uni_modules/uni-share”下,当然也可以手动下载压缩包,并在根目录创建uni_modules,并放入其下。

在'@/common/mixin_unishare.js' @代表根目录。新建mixin_unishare.js文件:

mport UniShare from 'uni_modules/uni-share/js_sdk/uni-share.js';
const uniShare = new UniShare();
    
export const uniShareCon =  {
	onBackPress({from}) {
		console.log(from);
		if(from=='backbutton'){
			this.$nextTick(function(){
				uniShare.hide()
			})
			return uniShare.isShow;
		}
	},
	methods: {
		uniShare() {
			//#ifdef APP-PLUS
			uniShare.show({
				//公共的分享参数配置  类型(type)、链接(herf)、标题(title)、summary(描述)、imageUrl(缩略图)
				content: { 
					type: 0,
					href: 'https://uniapp.dcloud.io/',
					title: '标题',
					summary: '描述',
					imageUrl: 'https://img-cdn-aliyun.dcloud.net.cn/stream/icon/__UNI__HelloUniApp.png'
				},
				menus: [{
						"img": "/static/app-plus/sharemenu/wechatfriend.png",
						"text": "微信好友",
						"share": { //当前项的分享参数配置。可覆盖公共的配置如下:分享到微信小程序,配置了type=5
							"provider": "weixin",
							"scene": "WXSceneSession"
						}
					},
					{
						"img": "/static/app-plus/sharemenu/wechatmoments.png",
						"text": "微信朋友圈",
						"share": {
							"provider": "weixin",
							"scene": "WXSceneTimeline"
						}
					},
					{
						"img": "/static/app-plus/sharemenu/mp_weixin.png",
						"text": "微信小程序",
						"share": {
							provider: "weixin",
							scene: "WXSceneSession",
							type: 5,
							miniProgram: {
								id: '123',
								path: '/pages/list/detail',
								webUrl: '/#/pages/list/detail',
								type: 0
							},
						}
					},
					{
						"img": "/static/app-plus/sharemenu/weibo.png",
						"text": "微博",
						"share": {
							"provider": "sinaweibo"
						}
					},
					{
						"img": "/static/app-plus/sharemenu/qq.png",
						"text": "QQ",
						"share": {
							"provider": "qq"
						}
					},
					{
						"img": "/static/app-plus/sharemenu/copyurl.png",
						"text": "复制",
						"share": "copyurl"
					},
					{
						"img": "/static/app-plus/sharemenu/more.png",
						"text": "更多",
						"share": "shareSystem"
					}
				],
				cancelText: "取消分享",
			}, e => { //callback
				console.log(uniShare.isShow);
				console.log(e);
			});
			//#endif
		}
	}
}

然后在相关的组件中:

<view class="share">
	<button @click="uniShare">分享</button>
</view>

<script>
	import { uniShareCon } from '@/common/js/mixin_unishare.js';
	
	export default {
		name: 'detail',
		mixins: [ uniShareCon ],
		data() {...}
                 ...
        }
</script>

引入mixins,然后使用即可。

注意:里面的分享图标图片必须使用png格式,尺寸在200X200或者300X300均可。

现实使用中遇到的问题

插件的使用效果如图:https://img-cdn-aliyun.dcloud.net.cn/stream/plugin_screens/uni-share_0.jpg

(里面的分享图需要自己在配置项里指定)

这里我遇到的问题:下载示例项目使用模拟器运行只能显示复制和更多,qq、微信这些图标和文字都不显示的?

要解决这个问题,首先请参考以下链接:

App端Share(分享)模块开启:

https://uniapp.dcloud.net.cn/tutorial/app-share.html

以微信为例,微信开启分享:

https://uniapp.dcloud.net.cn/tutorial/app-share-weixin.html

微信开放平台

https://open.weixin.qq.com/

uni.share方法介绍

https://uniapp.dcloud.net.cn/api/plugins/share.html#share

uni-share-在app端各社交平台分享配置说明

https://uniapp.dcloud.net.cn/api/plugins/share.html##uni-share-在app端各社交平台分享配置说明

新浪appkey

https://ask.dcloud.net.cn/article/209

当我们使用过程中,发现打开的分享只有“复制”和“更多”两项的时候,原因其实因为是没有在uniapp中的manifest.json中添加相关的分享配置,或者是添加了配置,但是没有重新打包并更新APP版本和APP基座,导致插件中plus.share.getServices方法在手机上找不到添加的配置,因此查看不到效果。

plus.share.getServices的API

https://www.html5plus.org/doc/zh_cn/share.html

所以当,发现添加了uni-app配置,但是没有在手机上生效的时候(没出现微信等项):

首先需要在manifest.json中的APP模块,选中share,以及下面的微信、QQ等

注意appid等必须填入正确的格式!!比如,我填入的微信的appid为:wx3d45eb2bef3cbfc7(仅供测试)

APP模块配置-share(分享)-勾选需要的配置项。只有勾选后,手机端,使用plus.share.getServices才能够检测到相应的服务。

如果填入了错误的格式,或者不存在的id,微信的配置项不会显示。新浪与QQ的配置同理。

修改APP基本的版本信息,1.0.x以及10x等

每次添加插件后,记得都要修改图中红线处的版本以及版本号等。只有修改后,再制作基座时候,才会更新新的插件。

重新自定义基座

自定义基座

https://ask.dcloud.net.cn/article/35115

https://uniapp.dcloud.net.cn/tutorial/run/run-app.html

官方提示:三方分享模块参数配置需提交云端打包后才能生效,真机运行调试时请使用自定义基座

使用分享功能基本流程:

  • 向三方分享平台申请开通,有些平台(如微信分享)申请成功后会获取appid
  • 在HBuilderX中配置申请的参数(如appid等),提交云端打包生成自定义基座(opens new window)
  • 在App项目中调用API进行分享操作

支持的三方分享平台:

点赞 支持一下 觉得不错?客官您就稍微鼓励一下吧!
关键词:uniapp
推荐阅读
  • uniapp实现被浏览器唤起的功能

    当用户打开h5链接时候,点击打开app若用户在已经安装过app的情况下直接打开app,若未安装过跳到应用市场下载安装这个功能在实现上主要分为两种场景,从普通浏览器唤醒以及从微信唤醒。

    9315次阅读 600人点赞 发布时间: 2022-12-14 16:34:53 立即查看
  • Vue

    盘点Vue2和Vue3的10种组件通信方式

    Vue中组件通信方式有很多,其中Vue2和Vue3实现起来也会有很多差异;本文将通过选项式API组合式API以及setup三种不同实现方式全面介绍Vue2和Vue3的组件通信方式。

    4060次阅读 302人点赞 发布时间: 2022-08-19 09:40:16 立即查看
  • JS

    几个高级前端常用的API

    推荐4个前端开发中常用的高端API,分别是MutationObserver、IntersectionObserver、getComputedstyle、getBoundingClientRect、requ...

    14265次阅读 931人点赞 发布时间: 2021-11-11 09:39:54 立即查看
  • PHP

    【正则】一些常用的正则表达式总结

    在日常开发中,正则表达式是非常有用的,正则表达式在每个语言中都是可以使用的,他就跟JSON一样,是通用的。了解一些常用的正则表达式,能大大提高你的工作效率。

    13177次阅读 461人点赞 发布时间: 2021-10-09 15:58:58 立即查看
  • 【中文】免费可商用字体下载与考证

    65款免费、可商用、无任何限制中文字体打包下载,这些字体都是经过长期验证,经得住市场考验的,让您规避被无良厂商起诉的风险。

    11801次阅读 943人点赞 发布时间: 2021-07-05 15:28:45 立即查看
  • Vue

    Vue3开发一个v-loading的自定义指令

    在vue3中实现一个自定义的指令,有助于我们简化开发,简化复用,通过一个指令的调用即可实现一些可高度复用的交互。

    15926次阅读 1269人点赞 发布时间: 2021-07-02 15:58:35 立即查看
  • JS

    关于手机上滚动穿透问题的解决

    当页面出现浮层的时候,滑动浮层的内容,正常情况下预期应该是浮层下边的内容不会滚动;然而事实并非如此。在PC上使用css即可解决,但是在手机端,情况就变的比较复杂,就需要禁止触摸事件才可以。

    14993次阅读 1221人点赞 发布时间: 2021-05-31 09:25:50 立即查看
  • Vue

    Vue+html2canvas截图空白的问题

    在使用vue做信网单页专题时,有海报生成的功能,这里推荐2个插件:一个是html2canvas,构造好DOM然后转canvas进行截图;另外使用vue-canvas-poster(这个截止到2021年3月...

    29343次阅读 2304人点赞 发布时间: 2021-03-02 09:04:51 立即查看
  • Vue

    vue-router4过度动画无效解决方案

    在初次使用vue3+vue-router4时候,先后遇到了过度动画transition进入和退出分别无效的情况,搜遍百度没没找到合适解决方法,包括vue-route4有一些API都进行了变化,以前的一些操...

    25342次阅读 1952人点赞 发布时间: 2021-02-23 13:37:20 立即查看
交流 收藏 目录