程序小哥参与的原生小程序,目前累计用户240W,在这里整理了一下期间遇到的坑,也给其余朋友一些经验。html
微信公众平台前往进行注册,生成appid和app secrect, appid在登陆微信开发者工具时须要。json
注意:canvas
直接查看微信文档小程序
onShareAppMessage() {
return {
title,
summary,
imageUrl,
path,
success
}
}
复制代码
<button open-type="share">分享</button>
wx.saveImageToPhotosAlbum({
filePath,
success: s => {
wx.showToast({
title: '已保存图片',
icon: 'success'
})
},
fail: f => {
console.log('f', f)
}
})
复制代码
onLoad(e) {
wx.showShareMenu({
withShareTicket: true
})
}
复制代码
在打开分享页面的用户,经过启动小程序的场景 scene 值为1044
打开页面,会在页面加载带上 shareTicket 参数。
注意:因为小程序生命周期的关系,根据业务不一样状况来判断场景值。后端
App({
// 每次进入就触发
onShow(e) {
// 分享群的场景标识
if (e.scene === 1044 && e.shareTicket) {
this.globalData.shareTicket = e.shareTicket
}
// 分享我的的场景标识
if (e.scene === 1007) {
this.globalData.shareTicket = ''
}
}
})
复制代码
在经过 wx.getShareInfo(Object object)方法, 后端解密,返回一个 openGIdbash
export function fetchGroupId(shareTicket) {
let { appName } = getApp().globalData
return new Promise((resolve, reject) => {
wx.getShareInfo({
shareTicket,
complete(shareKey) {
const data = {
sessionKey: getApp().globalData.sessionKey
}
delete shareKey.errMsg
Object.assign(data, shareKey)
request({
url,
method: 'POST',
data
}).then(r => {
if (r.code) {
// 解密失败从新登陆从新解密
login(appName).then(() => {
fetchGroupId(shareTicket).then(openGId => resolve(openGId))
})
} else {
resolve(r.data.openGId)
}
})
}
})
})
}
复制代码
经过微信控件显示群名服务器
<open-data type="groupName" open-gid="{{ groupId }}" />
复制代码