上一节我们已经使用云开发实现了小程序支付功能,那么我们就要思考,是否可以使用云开发来实现小程序消息推送功能呢? 更何况,云开发真的可以实现推送功能。
一直关注我的同学一定知道创建小程序是否需要云开发,老师还写过一篇借助java后台实现小程序消息推送的文章。 虽然我们可以借助java后台轻松实现消息推送。 但? 用java开发后台推送,必须搭建服务器,学习java代码,部署java代码。
但作为一个小程序开发者,使用java实在是太重了。
门户网站:
《利用小程序云开发实现小程序支付功能(含源码)》
《5行代码实现微信小程序模板消息推送(含推送后台和小程序源码)》
下面教大家如何利用云开发实现小程序模板消息的推送功能。
老规矩,先看效果图
说一下实现步骤
1.定义推送云功能
由于我们的云推送功能只能在云函数中调用,所以这里我们必须在云函数中实现推送功能。
1. 首先,我们定义一个云函数。

如果你还不知道如何使用云开发,如何定义云功能,可以去看老师之前的文章。 有写的。
把完整代码贴给大家
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async(event, context) => { console.log(event) return sendTemplateMessage(event) } //小程序模版消息推送 async function sendTemplateMessage(event) { const { OPENID } = cloud.getWXContext() // 接下来将新增模板、发送模板消息、然后删除模板 // 注意:新增模板然后再删除并不是建议的做法,此处只是为了演示,模板 ID 应在添加后保存起来后续使用 const addResult = await cloud.openapi.templateMessage.addTemplate({ id: 'AT0002', keywordIdList: [3, 4, 5] }) const templateId = addResult.templateId //新增的模版id const sendResult = await cloud.openapi.templateMessage.send({ touser: OPENID, templateId, formId: event.formId, page: 'pages/index/index', data: { keyword1: { value: '云开发实现推送', }, keyword2: { value: '2019 年 5 月 24 日', }, keyword3: { value: '编程小石头', }, } }) //删除模版id await cloud.openapi.templateMessage.deleteTemplate({ templateId, }) return sendResult }
上面的代码实现的功能是
1.创建模板并获取模板id
2.使用模板ID,填写模板消息,发送模板
3. 删除模板。
我们平时开发的时候,模板都是从小程序后台获取的。 为了演示方便,这里举一个例子。 所以正常开发时,只需要实现第二步即可。
推送的关键代码是这个方法:
...发送
通常我们定义好云函数后,如果直接调用就会报错。

看看这个错误,看到红框就知道了,肯定是权限问题。 所以我们定义好云函数之后,需要在云函数下面添加一个权限配置页面。如下图
重要的是这个:“.send”,推送权限。 因为推送是云开发给我们提供的,所以我们这里调用的时候,必须要配置相关的权限才能使用。
到这里我们的推送功能就实现了。 下面我们来验证一下。
2.验证云开发推送
验证其实很简单,类似于我们之前的《5行代码实现微信小程序模板消息推送(含推送后台和小程序源码)》。 只不过一个是在java后台推送,一个是在小程序推送。 接下来我们简单写一个小程序来验证一下推送demo。
功能很简单
1.获取,因为push必须有
2.点击通话实现推送
只需粘贴代码即可
有一点需要注意:我们测试的时候一定要在真机上测试。 因为模拟器获取不到。
我们在推送成功回调中打印日志。 如果日志中出现send: ok的字样,说明我们已经推送成功了。 我们来看看推送成功的效果。
微信聊天列表收到消息提醒
留言内容
至此,我们就利用云开发来实现完整的消息推送功能。 是不是很简单。
如果您对编程有任何疑问,可以添加老师的微信(备注小程序)或者可以向老师索要完整的源码。
一个编程小石码农,不是著名的全栈开发者。分享一些自己的经验和学习心得,希望后来的人少走弯路,填坑