900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 微信小程序消息推送(订阅消息原模板消息)开发流程

微信小程序消息推送(订阅消息原模板消息)开发流程

时间:2022-02-17 22:11:49

相关推荐

微信小程序消息推送(订阅消息原模板消息)开发流程

注:模板消息没了。

正常开发肯定需要前后端配合,此处都在小程序里写了

参考文档:https://developers./miniprogram/dev/framework/open-ability/subscribe-message.html

订阅消息是个很好的功能,但是现在被不良商家用烂了,特别是拼多多,有毒。

目录

一、获取模板ID

二、获取权限(提示用户订阅)

三、消息推送

1、获取openid

2、获取access_token

3、发送

小程序消息推送首先需要用户自主订阅,分为一次性订阅消息长期订阅消息,长期订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放。

一次性订阅消息很麻烦,用户授权一次发一次,再发就提示invalid。

整体流程就是先在小程序后台配置模板消息,获取到用户订阅后在代码里给模板填充字段,然后发送。

主要分三步走:

一、获取模板ID

添加模板之后就可以得到了。

需要做的就是填充详细内容那些字段。

二、获取权限(提示用户订阅)

wx.requestSubscribeMessage({tmplIds: ['模板ID'],success (res) { console.log("订阅成功:"+JSON.stringify(res))},fail(res){console.log("订阅失败:"+JSON.stringify(res))}})//注意把模板ID换为自己的

tmplIds是模板消息id的集合,最多三条,而且一次性订阅消息和长期订阅消息是不能放在一起的,还有,模板消息的标题也是不能相同的。

效果是这样的:

三、消息推送

消息推送有两个条件:有openid和access_token,正常开发肯定是需要这个的,一定会有,这里演示用。

1、获取openid

//获取openidwx.login({success: res => {//获取openidthis.getOpenID(res.code)}})getOpenID: function(code){wx.request({url: 'https://api./sns/jscode2session?appid=AppID&secret=Appsecret&js_code='+code+'&grant_type=authorization_code',method:'GET',success(res){getApp().globalData.oopenidi = res.data.openid;console.log("获取openid成功:"+res.data.openid)}})}//注意把AppID和Appsecret换为自己的

2、获取access_token

//获取access_tokenwx.request({url: 'https://api./cgi-bin/token?grant_type=client_credential&appid=AppID&secret=Appsecret',method:'GET',success(res){getApp().globalData.access_token = res.data.access_token;console.log("获取access_token成功:"+res.data.access_token)}})//注意把AppID和Appsecret换为自己的

3、发送

这里其实就是对模板消息的字段进行填充。

touser就是openid

page是用户点击推送消息的时候跳转的页面,但是仅限当前小程序。

这个字段有或没有在页面是有区别的。如果没有,下方的进入小程序查看是没有的。

最重要的就是data,这里面就是对模板消息字段的填充,格式也是非常简单,和日常用的一样。

wx.request({url: getApp().globalData.messageurl+getApp().globalData.access_token,method:'POST',data:{access_token:getApp().globalData.access_token,touser:getApp().globalData.oopenidi,template_id:'模板ID',page:'pages/index/index',data:{"character_string2": {"value": "370406199393939939"},"name1":{"value":"李三"},"thing6":{"value":"西药"},"thing3":{"value":"医保门诊"},"amount5":{"value":"20.00"}}},success(res){console.log(JSON.stringify(res))},fail(res){console.log(JSON.stringify(res))}})

这最后一步看似简单,但是搞不好就会报个错,我看网上很多人都会报invalid openid 或者invalid access_token,实际上并不是很难的bug,只是不够细心导致的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。