精华内容
下载资源
问答
  • uniapp实现分享功能

    千次阅读 2021-01-28 20:23:38
    <template>...分享</button> </view> </template> <script> export default { data() { return { text: '兼容' } }, components: {}, methods: { .
    <template>
    	<view>
    		{{text}}
    		<button type="primary" @click="click">分享</button>
    	</view>
    </template>
    
    <script>
    	export default {
    		data() {
    			return {
    				text: '兼容'
    			}
    		},
    		components: {},
    		methods: {
    			// #ifdef APP-PLUS
    			click() {
    				uni.share({
    					provider: "weixin",
    					scene: "WXSceneSession",
    					type: 1,
    					summary: "我正在使用HBuilderX开发uni-app,赶紧跟我一起来体验!",
    					success: function(res) {
    						console.log("success:" + JSON.stringify(res));
    					},
    					fail: function(err) {
    						console.log("fail:" + JSON.stringify(err));
    					}
    				});
    			},
    			// #endif
    			// #ifdef MP-WEIXIN
    			click() {
    				console.log('分享')
    			}
    			// #endif
    
    		},
    		onShareAppMessage() {
    			return {
    				title: 'hello'
    			}
    		}
    
    	}
    </script>
    </style>
    

     

    展开全文
  • uniapp分享功能-怎么能像html2canvas那样截图

    千次阅读 热门讨论 2019-12-03 14:04:04
    有时候我们在做分享功能的时候,有些恶心的要求要求我们把整个页面给生成一张图片 如果是H5还好 可以通过html2canvas框架来实现,但uniapp写的不是html,而是组件化的 那这个时候,我们可以用他H5+的屏幕截图的途径...

    有时候我们在做分享功能的时候,有些恶心的要求要求我们把整个页面给生成一张图片

    如果是H5还好  可以通过html2canvas框架来实现,但uniapp写的不是html,而是组件化的 

    那这个时候,我们可以用他H5+的屏幕截图的途径来实现这个功能

    <template>
    	<view class="content d-flex-center flex-direction-column vh-100" id="_poster">
    		<image :src="test" mode="aspectFit" class="test"></image>		
    	</view>
    </template>
    <script>
    export default {
    	data() {
    		return {
    		
    			test: ''
    		};
    	},
    	onLoad() {
    		
    	},
    	onReady() {
    		const that = this;
            //防止切图成白屏
    		setTimeout(function() {
    			that.toImage();
    		}, 1000);
    	},
    	methods: {
    		/* 截图 */
    		toImage() {
    			const that = this;
    			/* 获取屏幕信息 */
    			let ws = this.$mp.page.$getAppWebview();
    			let bitmap = new plus.nativeObj.Bitmap('test');
    			// 将webview内容绘制到Bitmap对象中
    			ws.draw(
    				bitmap,
    				function(e) {
    					/* 获取base64 */
    					that.test= bitmap.toBase64Data();
    					/* 加载base64编码 */
    					bitmap.loadBase64Data(
    						bitmap.toBase64Data(),
    						function() {
    							console.log('加载Base64图片数据成功');
    							/* 保存图片 */
    							bitmap.save(
    								'_doc/share.jpg',
    								{},
    								async (i)=>{
    									console.log('保存图片成功:' + JSON.stringify(i));
    									uni.saveImageToPhotosAlbum({
    										filePath: i.target,
    										success: function() {
    											/* 清除 */
    											bitmap.clear();
    											that.tools.toast('保存成功,请到相册中查看')
    										},
    										fail(e) {
    											that.tools.toast('保存失败')
    										}
    									});
    								},
    								function(e) {
    									console.log('保存图片失败:' + JSON.stringify(e));
    								}
    							);
    						},
    						function() {
    							console.log('加载Base64图片数据失败:' + JSON.stringify(e));
    						}
    					);
    				},
    				function(e) {
    					console.log('截屏绘制图片失败:' + JSON.stringify(e));
    				},
    				{
    					check: true, // 设置为检测白屏
    					clip: { top: '100px', left: '0px', height: '100%', width: '100%' } // 设置截屏区域
    				}
    			);
    		},
    
    };
    </script>

     

     

    展开全文
  • uniapp中的分享功能实现(APP,小程序,公众号) 1.APP端的分享 app端的分享可以直接使用uniapp封装的方法uni.share,uni-app的App引擎已经封装了微信、QQ、微博的分享SDK,开发者可以直接调用相关功能。可以分享到...

    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 = this
    	let 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吧

    展开全文
  • 之前分享了一篇 uniApp实现微信分享页面/二维码功能

    之前分享了一篇 uniApp实现微信分享页面/二维码功能,但是小程序端似乎没法实现直接分享图片,看了蛮多教程基本都是保存分享页面到本地相册的,然后分享是用户主动分享。所以这里继上次APP分享微信这里再兼容下小程序端的分享(即保存分享页面到本地)。

    //前端页面设置一个画布,并隐藏起来
    <canvas canvas-id="myCanvas" :style="'width:'+windowWidth+'px;height:'+windowHeight+'px;position:absolute;op:-9999px;left:-9999px;'"/>
    
    //分享按钮的兼容方法
    shareWeiXin(scene){
    	//#ifdef MP
    	// console.log("小程序端")
    	this.saveImage()
    	//#endif
    	
    	//#ifdef APP-PLUS
    	let _this = this
    	let sc = scene
    	_this.capture(sc)
    	//#endif
    },
    //小程序端保存图片
    saveImage(){
    	// console.log("ok")
    	uni.showLoading({
    		title: '图片绘制中...',
    	})
    	var url = '../../../../static/fxbg2.jpg'
    	
    	//开始绘制图片,这边主要就是canvas写法了,uniapp官方:https://uniapp.dcloud.io/api/ui/canvas?id=%E5%9C%A8canvas%E4%B8%8A%E7%94%BB%E5%9B%BE
    	const context = uni.createCanvasContext('myCanvas')
    	context.drawImage(url,0, 0, this.windowWidth, this.windowHeight)
    	context.drawImage(this.src,this.windowWidth/2-95/2, this.windowHeight/2,95,95)
    	context.drawImage("../../../../static/fxb1.jpg",(this.windowWidth-251)/2,7*(this.windowHeight/8),78,24)
    	context.drawImage("../../../../static/fxb2.jpg",(this.windowWidth-251)/2+88,7*(this.windowHeight/8),78,24)
    	context.setFontSize(14)
    	context.setFillStyle("#FEEDBB")
    	context.fillText('邀请码:'+this.invitation,(this.windowWidth-251)/2+88+88,7*(this.windowHeight/8)+16)
    	
    	//重点:这边本来保存图片是写在draw之后,但第一次保存时空白,第二次才生效,写在draw回调里面就OK了。
    	context.draw(false,function(){
    		uni.canvasToTempFilePath({
    			canvasId:'myCanvas',
    			success: function(res){
    				uni.hideLoading()
    				// console.log(res.tempFilePath)
    				uni.saveImageToPhotosAlbum({
    					filePath:res.tempFilePath,
    					success : function(res){
    						uni.showToast({title : '图片已保存'})
    					}
    				})
    			}
    		})
    		
    	})
    },
    
    展开全文
  • uniapp+springBoot实现APP微信支付功能

    千次阅读 2020-03-31 10:26:37
    uniapp+springBoot实现APP微信支付功能 在pom.xml文件中引入SDK <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3...
  • uniApp实现微信分享页面/二维码功能

    万次阅读 2019-04-01 17:02:04
    需求:点击分享页面的分享到微信/wx朋友圈按钮将该页面分享到对应路径。 <view class="content"> <image :src="src" mode="" class="qrcode"></image> <view class="btn"> <...
  • uniapp 转H5后 实现微信浏览器自定义分享样式 uniapp 项目转 h5 1.在manifest.json文件中,找到H5配置一下路径,需要注意这个名字需要和布到线上的文件夹名字一致 2.就是运行打包了 选择网站pc就是h5打包了,之后.,...
  • HTML <button open-type="share"></button> JS onShareAppMessage(){ return { title:'测试项目', path:'/Index' } } //与methods同级
  • uniapp实现微信分享

    千次阅读 2020-04-29 17:49:00
    uniapp实现微信分享 具体属性请参考官方文档 uniapp官网 onShareAppMessage(res) { //res参数可判断该分享的事件源 if (res.from === 'button') { //当点击button时触发分享 } if (res.from === '...
  • 传输门
  • uniapp分享配置

    2021-01-10 14:15:04
    onLaunch: function() { this.overShare() uni.showLoading({ title: '加载中', ... //间接实现全局设置分享内容 wx.onAppRoute(function (res) { //获取加载的页面 let pages = getCurrentPages()..
  • 基于uniapp + nvue实现uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能。 1: 聊天会话管理 2: 好友列表 3: 文字、语音、视频、表情、位置等聊天消息收发 4: 一对一语音视频在线通话 先放上效果...
  • uniapp 小程序分享功能

    万次阅读 2019-11-12 23:06:42
    最近用uniapp写了一个小程序,之前都是用它来写app的,这次要求兼容微信小程序以及QQ小程序,那肯定就少不了分享这个功能,所以记录下来方便自己以后看,也希望能帮到更多的人 onShareAppMessage: function(e) { ...
  • 于是我又开始从uniapp官网上查找,找到了一个插件可以实现 图片预览 图片隐藏 图片下载的功能uniapp 插件市场——保存图片插件 插件的使用方法很简单: 功能介绍 1.长按保存图片 2.右下角图片点击保存图片 3....
  • uniapp实现H5微信分享

    万次阅读 2019-08-09 10:16:07
    效果图 下面是微信文档介绍 后台开发参考官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 ...步骤一:绑定域名 ...先登录微信公众平台进入“公众号设置”的“功能...
  • 实现 一.局部配置,单个页面 //发送给朋友 onShareAppMessage(){ return { title: '',//分享标题 path: ''//分享页面路径 imageUrl: '',//分享图标 desc:'',//自定义分享描述 } }, //分享朋友圈 ...
  • uniapp dialog功能

    千次阅读 2021-02-09 04:29:11
    今天给小伙伴分享一波uniapp dialog弹窗插件,开发这个插件的原因是最近迭代一个项目,到DCloud插件市场转了一圈发现要 money,一气之下用了几个小时开发了一款,下面就给大家介绍一下,本插件支持小程序、APP、各大...
  • uniapp实现全局分享分享朋友圈

    千次阅读 2021-02-23 09:28:19
    原链接地址 创建公共文件share.js export default { ... onShareTimeline(res) {//分享到朋友圈 return {} }, } 或者 export default { created() { //#ifdef MP-WEIXIN wx.showShareMenu({
  • Uniapp实现扫码功能

    千次阅读 2020-11-03 16:08:23
    uniapp的时候会遇到扫码功能,下面是在项目中遇到的调试问题,再此记录 扫码button> scan3() { uni.scanCode({ onlyFromCamera: true, success: function(res) { console.log('条码类型:' + res....
  • Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便。GoEasy上架DCloud Uniapp插件市场已经有一个多月了,收到很多Uniapp开发人员的赞扬和...
  • 在使用电商app时,通常有个分享给好友的功能,如果想要做分销类型,发展下线,也就是你邀请的好友是你的下级的话,就需要分享时将个人信息附带进去,因此会涉及到生成分享图片。 界面 点击上图中的“生成并保存图片...
  • 做的一个校园版的美团外卖项目,这里分享一下订单提醒功能,使用uniapp+WebSocket实现。 开始 一、导入pom <!--socket--> <dependency> <groupId>org.springframework.boot</groupId> &...
  • Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便。GoEasy上架DCloud Uniapp插件市场已经有一个多月了,收到很多Uniapp开发人员的赞扬和...
  • Uniapp使用GoEasy实现websocket实时通讯

    千次阅读 2020-03-24 09:11:57
    Uniapp作为近来最火的移动端开发技术,一套代码,可以打包成Android/iOS app和各种平台的小程序,可谓是没有最方便只有更方便。 GoEasy上架DCloud Uniapp插件市场已经有一个多月了,收到很多Uniapp开发人员的赞扬和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 821
精华内容 328
关键字:

uniapp分享功能实现