借助云开发实现小程序模版消息推送(含源码)
上一节给大家将了借助云开发实现小程序支付功能,那么我们就要想了,能不能借助云开发实现小程序消息推送功能呢? 还别说,云开发还真能实现推送的功能。
一直关注我的同学肯定知道老师之前也写过借助java后台实现小程序消息推送的文章。 我们借助java后台虽然也能轻松的实现消息推送。但是呢?用java开发后台推送,必须要搭建服务器,学习java代码,部署java代码当然你就是做java开发的,或者学习过java,这没什么。但是作为小程序开发人员来说,用java显得太重了。
传送门:
借助小程序云开发实现小程序支付功能(含源码):https://www.jianshu.com/p/ddccf5f95e8c
5行代码实现微信小程序模版消息推送 (含推送后台和小程序源码):https://www.jianshu.com/p/35da86f309d4
下面就来教大家如何借助云开发实现小程序模版消息的推送功能。
老规矩,先看效果图
下面来讲实现步骤
一,定义推送的云函数
由于我们的云推送功能只能在云函数里调用,所以我们这里必须要在云函数里实现推送功能。
1,首先我们定义一个云函数push0524。 如果你还不知道如何使用云开发,如何定义云函数,去翻下老师之前的文章。有写的。
把完整的代码贴给大家
// 云函数入口文件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,删除模版。
我们正常开发时,模版都是在小程序后台获取到的。这里是为例演示方便。所以正常开发时,只需要实现第二步就行了。
推送的关键代码就是这个方法: cloud.openapi.templateMessage.send
通常我们定义完push0524云函数以后,如果直接调用的话,会报错误的。
来看下这个错误,看到红色框里的permission就知道,肯定是权限的问题。所以我们在定义完云函数以后,要在push0524云函数下面添加权限配置页面。如下图
重要的就是这个: "templateMessage.send", 推送权限。因为推送是云开发给我们提供的,我们这里调用时,必须配置相关权限,才能使用的。 到这里我们的推送功能就实现了。下面我们来验证下。
二,验证云开发推送
验证其实很简单,和我们之前的《5行代码实现微信小程序模版消息推送 (含推送后台和小程序源码)》 类似。只不过一个是在java后台推送,一个是在小城里推送。下面我们简单写个小程序里验证推送的demo。
功能很简单 1,获取formid,因为推送必须有formid的 2,点击调用push0524实现推送
简单的贴下代码
需要注意的一点:我们测试时,必须要真机测试。因为模拟器没法获取到formid的。
我们在推送成功的success回调中打印下log。如果log中出现,send:ok字样,就代表我们推送成功了。来看下推送成功的效果。 微信聊天列表接收到了消息提醒
消息内容
到这里我们就用云开发实现完整的消息推送功能了。是不是很简单。
- VMware Fusion DHCP方式下如何指定虚拟机IP地址
- Visual Studio 2015正式发布
- 科技巨头纷纷入局 医疗人工智能需要奋起直追?
- Windows PowerShell 工具
- 游戏开发之在UE4中编写C++代码控制角色
- Visual Studio 64位应用程序编译
- Windows 7 上安装Visual Studio 2015 失败解决方案
- Silverlight调用本机exe程序
- 游戏开发之UE4添加角色到场景中
- 人工智能取代人类?高通副总裁这样说
- Disque:Redis之父新开源的分布式内存作业队列
- mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项
- EasyStack郭长波连任OpenStack基金会独立董事
- VMware Fusion 中如何复制centos/linux虚拟机
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- HTTP协议基础及发展历史
- Vi 和 Vim 的使用
- k8s删除Terminating状态的命名空间
- CentOS7下vsftpd over SSL/TLS加密传输配置实践
- Xargs Sh -c Skipping the First Argument
- Centos系统安装
- Python 为什么能支持任意的真值判断?
- Python 为什么要在 18 年前引入布尔类型?且与 C、C++ 和 Java 都不同?
- Python计算大文件行数方法及性能比较
- docker容器部署Prometheus服务——云平台监控利器
- ASP.NET Core 奇技淫巧之接口代理转发
- 基于CDH(Cloudera Distribution Hadoop)的大数据平台搭建
- troubleshoot之:用control+break解决线程死锁问题
- Docker 三剑客之docker-compose
- 腾讯云 Severless-Express 项目开发和灰度发布最佳实践