微信小程序前端推送消息通知 -- 需要获取用户订阅权限

今天碰到一个需求:小程序上用户点击领券的时候去获取用户的订阅权限,然后领到券且使用完的用户之后回收到邀请评价的消息通知。前端方面的功能相对简单

1、去该小程序的后台中找到订阅消息及需要的模板ID

小程序后台地址
https://mp.weixin.qq.com/wxamp/home/guide?token=477769001&lang=zh_CN

2.在小程序前端代码中写入方法

	//用户点击时触发的方法--拉取用户授权 成功才能领券及后续的推送通知
	click:function(){
    wx.requestSubscribeMessage({
      //模板ID
      tmplIds: ['aVKmwXl8ALXHp7_d599Lkp4RSpGvLSgSR028mF'],
      success: (res) => {
      	 //模板ID
        if (res['aVKmwXl8ALXHp7_d599Lkp4RSpGvLSgSR028mF'] === 'accept') 
        {
          wx.showToast({
            title: '订阅成功!',
            duration: 1000,
            success(data) {
               //用户同意授权之后执行的方法写在这里
            }
          })
        }
      },
      fail(err) {
        console.log(err);
        request.prompt.showToast('请开启订阅消息权限', 'none')
      }
    })
  },

到这里前端部分就结束啦,后续的推送让后端去实现就行啦,是不是特别简单

### 实现 Uni-app 中微信小程序消息推送 在 Uni-app 开发环境中实现微信小程序消息推送主要依赖于 `uni-subscribemsg` 组件以及云函数的支持。此组件允许开发者请求用户订阅特定类型的模板消息,从而能够在满足条件的情况下向用户发送通知。 #### 使用 `uni-subscribemsg` 请求订阅权限 为了使应用能够发送订阅消息用户,在首次尝试发送前需先获取用户的同意。这一步骤通过调用 `uni.requestSubscribeMessage()` API 来完成[^1]: ```javascript // 调用API请求订阅授权 uni.requestSubscribeMessage({ tmplIds: ['your_template_id'], // 替换成实际的模板ID列表 success(res) { console.log('用户同意:', res); }, fail(err) { console.error('用户拒绝或发生错误:', err); } }); ``` #### 配置并上传至云端处理逻辑 由于 `uni-subscribemsg` 只能在云函数内部使用,因此需要创建相应的云函数来处理后续的操作,比如当触发某些事件时向指定用户发送已获准的通知。具体来说就是在项目的 `/cloudfunctions/` 文件夹下新建一个 JavaScript 文件作为云函数入口,并编写如下代码片段用于发起 HTTP POST 请求到微信公众平台接口以提交待发送的内容: ```javascript const cloud = require('wx-server-sdk'); cloud.init(); exports.main = async (event, context) => { const { OPENID } = cloud.getWXContext(); try { let response = await wx.cloud.callFunction({ name: 'sendTemplateMsg', data: { templateId: event.templateId, page: event.page || '', data: event.data, toOpenid: OPENID } }); return response.result; } catch(error){ throw new Error(`Failed sending message ${error.message}`); } }; ``` 上述例子假设存在另一个名为 `sendTemplateMsg` 的辅助云函数负责执行具体的网络通信工作;而这里的主函数则专注于准备参数并将它们传递过去以便进一步操作。 #### 发送统一服务消息替代方案 除了传统的基于模板的消息外,还可以考虑利用微信提供的“统一服务消息”。这种方式不需要预先定义固定的模板结构,而是可以根据业务需求灵活构建消息体。不过需要注意的是,这种方法通常涉及更复杂的配置过程和服务端支持[^2]。 对于那些希望简化流程或者不具备复杂后端架构能力的小型项目而言,“统一服务消息”的直传模式提供了一种更为便捷的选择。它允许前端直接调用特定的服务端接口(如 Send 接口),并通过返回的结果确认是否成功投递了消息[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值