[猫头虎分享21天微信小程序基础入门教程]第21天:小程序的社交分享与消息推送
微信小程序提供了丰富的分享功能,可以让用户将内容分享到微信好友和朋友圈。
在小程序的 app.json
文件中配置分享菜单:
{
"window": {
"navigationBarTitleText": "小程序",
"navigationStyle": "custom"
},
"tabBar": {
"list": [{
"pagePath": "pages/index/index",
"text": "首页"
}]
}
}
在页面的 js
文件中实现分享逻辑:
Page({
onShareAppMessage() {
return {
title: '分享标题',
path: '/pages/index/index',
imageUrl: '/images/share-image.png', // 分享图片
success(res) {
console.log('分享成功:', res);
},
fail(err) {
console.error('分享失败:', err);
}
};
}
});
根据页面内容动态生成分享标题和路径:
Page({
data: {
articleTitle: '文章标题'
},
onShareAppMessage() {
return {
title: `快来阅读这篇文章: ${this.data.articleTitle}`,
path: `/pages/article/article?id=123`,
imageUrl: '/images/share-image.png',
success(res) {
console.log('分享成功:', res);
},
fail(err) {
console.error('分享失败:', err);
}
};
}
});
微信小程序提供了订阅消息功能,可以向用户推送消息。
在微信公众平台的“订阅消息”功能中创建并配置消息模板。
在页面的 js
文件中请求用户订阅消息权限:
Page({
requestSubscribeMessage() {
wx.requestSubscribeMessage({
tmplIds: ['TEMPLATE_ID'], // 替换为你的订阅消息模板ID
success(res) {
console.log('订阅成功:', res);
if (res['TEMPLATE_ID'] === 'accept') {
// 用户同意订阅消息
wx.showToast({
title: '订阅成功',
icon: 'success'
});
}
},
fail(err) {
console.error('订阅失败:', err);
}
});
}
});
在后端服务器上实现发送订阅消息的逻辑。以下是使用 Node.js 和 Express 的示例:
const express = require('express');
const axios = require('axios');
const app = express();
app.post('/send-message', (req, res) => {
const { openid, templateId, formId, data } = req.body;
// 获取小程序的 access_token
axios.get(`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=YOUR_APPID&secret=YOUR_SECRET`)
.then(response => {
const accessToken = response.data.access_token;
// 发送订阅消息
return axios.post(`https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${accessToken}`, {
touser: openid,
template_id: templateId,
page: 'pages/index/index',
data: data
});
})
.then(response => {
res.json({ success: true, data: response.data });
})
.catch(error => {
console.error('发送消息失败:', error);
res.json({ success: false, error: error.message });
});
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
概念 | 详细内容 |
---|---|
社交分享 | 配置分享菜单,使用 onShareAppMessage 实现分享 |
自定义分享内容 | 动态生成分享标题和路径 |
消息推送 | 配置订阅消息模板,请求订阅消息权限,发送订阅消息 |