程序小哥参与的原生小程序,目前累计用户 240W,在这里整理了一下期间遇到的坑,也给其他朋友一些经验。
微信公众平台前往进行注册,生成 appid 和 app secrect, appid 在登录微信开发者工具时需要。
注意:
直接查看微信文档
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)方法, 后端解密,返回一个 openGId
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 }}" />
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.