微信小程序 如何订阅消息?

微信公众号

微信公众号分为两种类型:订阅号和服务号,它们在功能和使用方式上有一些区别。

1.订阅号(Subscription Account):

	主要用于向用户提供信息、资讯、新闻等更新性内容。
	每天可以发送1条群发消息给所有关注者。
	发送的消息在用户的订阅号消息列表中按时间排序显示,不会直接发送到用户的主要聊天列表。
	用户关注后,默认不会收到订阅号的模板消息和客服消息。

2.服务号(Service Account):

提供更多的功能,可以与用户进行交互和提供个性化服务。
可以通过模板消息和客服消息与用户进行互动,推送更多种类的消息类型。
可以每月发送4条群发消息给所有关注者,且每条消息可以发送给更多用户。
发送的消息会直接显示在用户的主要聊天列表中。

微信公众号的类型是在注册时选择的,一旦选择了订阅号或服务号,无法直接转换。如果您主要是提供资讯和更新性内容,订阅号可能更适合;如果您需要与用户进行更多的互动和提供个性化服务,服务号则更适合。

订阅消息

订阅消息,一般更适用于小程序或小游戏,程序按照一定的触发规则,来给用户推送已订阅的消息。

微信订阅消息,官方文档

订阅步骤:

1.设置订阅模板

微信小程序 如何订阅消息?_第1张图片

2.前端授权订阅


wx.requestSubscribeMessage({
	tmplIds: tmplIds,
	success (res) {
		console.log("订阅消息成功:",res);
		let temlIdsOk:string[]=[];
		for(let tmplId of tmplIds){
			//1.accept 接受  2.reject 拒绝 3.ban 被后台禁用 4.filter 该模板因为模板标题同名被后台过滤 
			if(res[tmplId]=="accept"){
				temlIdsOk.push(tmplId);
			}
		}
		if(func)func(temlIdsOk);
	},
	fail(res){
		console.log("订阅消息失败:",res,res.errCode);
		/*10001	参数传空了
		10002 网络问题,请求消息列表失败
		10003 网络问题,订阅请求发送失败
		10004 参数类型错误
		10005 无法展示 UI,一般是小游戏这个时候退后台了导致的
		
		20001 没有模板数据  
		20002模板消息类型 既有一次性的又有永久的 
		20003 模板消息数量超过上限 
		20004 用户关闭了主开关,无法进行订阅 
		20005 小游戏被禁封
		*/
		
		wx.getSetting({
			withSubscriptions: true,
			success(res) {
				//具体模板 接受状态
				res.subscriptionsSetting[模板id]
				//总开关 开启状态
				const mainSwitch = res.subscriptionsSetting.mainSwitch;
				console.log('消息通知总开关状态:',res, mainSwitch);
			},
			fail(err) {
				console.error('获取授权设置失败:', err);
			}
		});
	}
})

微信小程序 如何订阅消息?_第2张图片

订阅消息有两种方式:一次性订阅和长期订阅。

一次性订阅(Once Subscription):

	1.适用于临时性的订阅需求,例如用户只需要接收一次性的通知或事件提醒。
	
	2.选择订阅某个特定的模板消息,没有勾选“总是保持以上选择”。
	
	3.用户在收到一次性订阅消息后,将无法再次收到相关的订阅消息。
	

长期订阅(Long-term Subscription):


	1.适用于长期性的订阅需求,用户需要持续接收某个特定类型的消息推送。
	
	2.选择订阅某个模板消息,并勾选“总是保持以上选择”。

	3.用户可以随时在微信设置中取消对某个或所有模板消息的订阅权限,或者重新进行订阅选择。
	

订阅后,会出现在小程序,设置列表
微信小程序 如何订阅消息?_第3张图片

3.后端发送消息:

首先须在MP后台:开发 -> 开发管理 -> 开发设置 -> 开启消息推送

微信小程序 如何订阅消息?_第4张图片
开启消息推送,需要一次简单验证:

1.填写好url和token

微信小程序 如何订阅消息?_第5张图片
2.编写验证代码,验证服务器地址的有效性


private function checkSignature()
{
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
		
		$echostr= $_GET["echostr"];
		//填写的TOKEN
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if ($tmpStr == $signature ) {
        return $echostr;
    } else {
        return "验证失败";
    }
}


3.点击绿色按钮,提交,微信会访问一次第一步填写的url,若是返回的echostr,则配置成功。

4.后端推送订阅消息

//请求地址
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN

//请求参数
//调用凭证
access_token
//推送用户 openId
touser
//模板id 需用户订阅才可以
template_id
//模板数据
data   { "key1": { "value": any }

5.微信收到消息:

消息会出现在"服务通知"里边。

微信小程序 如何订阅消息?_第6张图片

你可能感兴趣的:(微信小游戏,微信小程序,小程序)