分享方式
第一种方式小程序分享可以通过点击右上角三个点分享也可以点击按钮实现分享,需要注意的是当前文件中必须要有onShareAppMessage方法,如果分享到朋友圈需要有onShareTimeline方法,里面有几个属性可以配置分享出去的文案以及图片,title分享标题、imageUrl分享图片、path分享给好友的链接、query分享到朋友圈的链接,注意里面不能有异步请求,因为分享是一个同步操作不是异步操作,ios目前没有开放分享到朋友圈的功能.
分享可以在每个文件里面都写也可以写一个共同的分享,比如在app.js中使用wx.onAppRoute方法,例:
wx.onAppRoute(()=>{
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
currentPage.onShareAppMessage = {
title: '',
imageUrl: '',
path: ''
}
})
第二种方式生成小程序二维码,扫描进入对应的页面,生成的二维码信息保存在scene参数里面,但是scene参数不能超过32个字符,所以还需要调用一个接口需要将信息转成短字符串,调用小程序接口生成小程序二维码,利用canvas将二维码画到一块区域上,然后生成图片保存到手机相册,用户扫描这个图片就会进入对应的页面,实现分享功能
分享功能遇到的问题
- A和B都是分销客,A分享一个页面给B,B将这个页面分享给好友之后回到当前页面发现当前页面的shareId变了
- 继续一:通过分享页面进入其他页面再次返回分享之后发现url上新添加的参数没有了
- 分享过来的shareId没有被获取到 第一个问题是因为我修改了当前分享页面的options,options.shareId等于外来的shareId或者自身的shareId,因为options是一个对象,里面保存的是当前页面的参数也就是url后面拼接的参数,这样子当前页面的url发生改变,那么在分享之后就会触发onShow方法,这个方法重新给shareId赋值成外部的shareId.
总结:直接修改onLoad中options会改成当前页面的url
第二个问题我虽然修改了当前的options,分享之后发现url也改变了,但是我进入其他页面,再次返回分享之后发现url上新增的参数又没了,这时候我意识到我只是修改了当前的页面url,但是原始的url并没有改变,所以返回之后url上的参数又初始化了,所以需要获取当前页面的route给url添加参数.在app.js中添加:
wx.onAppRoute(route => {
route.query.shareId = wx.getStorageSync('shareId')
})
总结:直接修改options只是改变了当前页面的url,但是原始的url不会改变,所以需要改变route才行
第三个问题是因为接口报错导致的,页面接口报错导致代码不会继续下去,所以赋值不成功.
promise使用
如果A调用B,然后使用then,那么必须保证B使用promise,假如B调用c,c使用promise,B没有使用就会有问题