小程序订阅消息
一、概述
1.微信小程序可以向用户推送信息吗?
答:可以,可以推送订阅消息。(原有的模板消息已下架)
2.订阅消息是什么?
答:订阅消息是需要用户主动订阅,开发者才可以面向用户发送的消息。
关键要素如下:
①订阅消息下发条件
:用户自主订阅
②订阅消息推送位置
:服务通知
③订阅消息卡片跳转能力
:点击查看详情可跳转至该小程序页面
3.订阅消息和模板消息,有什么不同?
(1)模板消息:
当用户在小程序内完成特定的交互行为(支付或提交表单行为)来收集formid,后续利用该formid可以在7天内任意时间给该用户推送模板消息。
①发送模板消息一定要携带formid
②推送的有效时间为7天
③用户只能被动选择接收,下发的权利掌握在开发者手上
(2) 订阅消息:
当用户在小程序内点击特定按钮后会弹出申请订阅弹窗,同意后小程序可在后续任意时间给该用户推送服务通知。
较模板消息,订阅消息有如下几个特点:
①选择权在用户手中 :在小程序内,订阅消息像是一个开关,需要用户主动点击授权之后,开发者才能向其推送服务通知。
②时长不受限制 :订阅消息没有7天内推送消息的时间限制,只要用户没有主动拒收消息推送,就可以随时推送服务通知。
③安全系数更高
4.如何接入订阅消息?
答:接入订阅消息的步骤,主要分三步:
(1).选择订阅消息模板:
进入微信小程序后台,选择/添加小程序服务类目,微信将自动根据类目分配消息模板到你的公共模板库,你可在公共模板库中,选择合适的模板(或者申请新模板,申请新模板须审核后才可使用)
(2).将订阅消息的触发埋入用户交互流程中:
申请发送订阅消息,需要用户手动在小程序进行触发。将订阅消息的触发设计到小程序的交互流程中,用户点击后,才能触发订阅申请弹窗。
(3).用户点击触发后,下发订阅消息发送申请弹窗:
用户勾选同意下发的模板,点击“允许”后,就可以用该模板进行推送。
注意:订阅消息的模板与小程序所属类目
直接挂钩,如果删除小程序类目,该类目对应的订阅消息模板也将一并删除,请特别留意。
5.如何做好订阅消息?
答:
(1)关于订阅时机:让用户在需要用到消息的时候,触发订阅机制,而不要让用户一打开小程序就进行订阅。
(2)关于订阅内容:引导用户订阅跟用户当前的服务相关的模板信息
,其他暂时用不到的模板建议等用户用到之后再订阅,以免用户产生误解而取消订阅。
(3)关于订阅流程:建议开发者将订阅消息融入到自然的产品体验流程中。
(4)关于强制订阅:不建议进行强制订阅
,避免出现用户不订阅就无法进行下一步的操作的情况,引起用户反感。
6.订阅消息推送工具
答:
工具一:微信
步骤一:获取模板ID
在微信公众平台收到配置获取模板ID:登录https://mp.weixin.qq.com获取模板,如果没有合适的模板, 可以添加申请新模板,审核通过后可使用。
步骤二:获取下发权限
详见小程序端消息订阅接口wx.requestSubscribeMessage
步骤三:调用接口下发订阅信息
详见服务端消息发送接口subscribeMessage.send
工具二:阿拉丁小神推
是专注于小程序的粉丝推送平台,基于微信的订阅消息的推出,从选择订阅消息模板,配置订阅消息的触发,收集用户订阅数据,创建推送触达用户,到停机用户召回效果,提供了一整套的产品服务。
7.订阅消息包括两种:
一次性订阅消息
一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
长期订阅消息
一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。
为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。
目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
8.微信小程序官方文档:
(1)小程序订阅消息指南介绍:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
(2)服务端接口介绍
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html
二、 代码实现
效果图:
1、微信端
subscribe-message.wxml:
<view class="main">
<view class="title">订阅消息实现,以下单为例</view>
<view class="subscribeBtn" bindtap = "toSubscribeMsg">下单</view>
</view>
subscribe-message.js:
// pages/subscribe-message/subscribe-message.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
//订阅消息
toSubscribeMsg(){
console.log("toSubscribeMag")
var that = this
//调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果
wx.requestSubscribeMessage({
tmplIds :['krNzVrso-gFMbz3gRuuLiAYf4_yep8IqyNwQHDK8_tw'], //需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息
success: function(res){
console.log(res)
let result = res['krNzVrso-gFMbz3gRuuLiAYf4_yep8IqyNwQHDK8_tw']
console.log('result',result)
if(result == 'accept'){
//允许订阅
wx.showModal({
title: '提示',
content: '订阅成功',
showCancel: false
})
//服务端调用 消息发送接口 subscribeMessage.send
}else if(result == 'reject'){
//取消
console.log('拒绝订阅')
}
}
})
},
/**
* 用户点击右上角分享
*/
// onShareAppMessage: function () {
// }
})
subscribe-message.wxss:
/* pages/subscribe-message/subscribe-message.wxss */
.main{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.title{
width: 100%;
text-align: center;
font-family: PingFang SC;
font-style: normal;
font-weight: 400;
font-size: 36rpx;
color