uniapp 微信小程序订阅(一次性订阅消息)

文章讲述了在uniapp中如何处理微信小程序的消息订阅,包括用户手动点击订阅、支付回调唤醒订阅以及用户的选择行为。uni.requestSubscribeMessage接口用于订阅消息,而uni.getSetting用于检查订阅设置。当后台封禁时,需要引导用户开启权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们需要了解微信小程序的一些基本的,才能知道我们要做什么:

  • 微信小程序消息订阅只有两种形式可以召唤出来:
    1、用户手动点击按钮
    2、支付回调唤起

  • 一次调用最多可订阅3条消息

  • 小程序弹出后,可点击的情况
    1、单纯点击取消/确认键
    2、勾选了总是保持以上选择
    3、勾选了拒绝,不再询问

  • 一次性订阅发送之后,就无效的了,需要再次让用户重新点击同意

1、uniapp调用微信小程序 文档
注意:在此之前勾选了总是保持以上选择,点击按钮的时候调用此接口,能成功调用,但是不会把框弹出来,我们此刻需要根据任务需求来看是弹出框提示,还是静默回调不吭声

 uni.requestSubscribeMessage({
      tmplIds: ids,
      success(res) {
     	 //消息订阅调起成功,返回值'accept'、'reject'、'ban'分别代表用户对此条订阅是同意、拒绝、后台禁用
      },
      fail(err) {
      	 //消息订阅调起失败
      },
      complete() {
        // 无论确定还是取消,只要点击按钮后都会执行
      },
    })

2、那么执行上面那个方法的前提,是需要我们判断后台是否封禁了,如果封禁状态则引导用户去开启,如果是非封禁状态则直接调用微信消息订阅即可

   uni.getSetting({
      withSubscriptions: true,
      success(alwaysRes) {
        if (!alwaysRes.subscriptionsSetting.mainSwitch) {
        	//后台封禁了
        	//引导用户打开权限
        	uni.showModal({
      		  title: '是否重新授权消息订阅功能',
      		  success(res) {
        	    if (res.confirm) {
          		  uni.openSetting({
                    success(res) {
                      if (res.subscriptionsSetting) {
                        Toast('开启权限成功')
                      }
                    },
                   fail() {
                     Toast('开启权限失败')
                   },
                 })
                } else if (res.cancel) {
                  Toast('拒绝开启开启权限')
                }
             },
          })
        } else {
        	//后台未封禁
        	//alwaysRes.subscriptionsSetting.itemSettings != null 是检测订阅消息中是否有始终保持不再通知的选项
        }
      },
    })
### UniApp 中实现微信小程序消息推送的方法 在 UniApp 开发环境中集成微信小程序消息推送功能主要依靠微信公众平台提供的订阅消息能力。通过该特性可以向用户发送一次性或长期有效的消息通知。 #### 注册并配置消息模板 开发者需先登录微信公众平台,在后台创建所需的消息模板,并获取对应的 `templateId` 参数[^1]。这一步骤至关重要,因为后续所有的消息推送都将基于已注册的模板进行。 #### 用户授权订阅消息 为了确保用户体验以及遵循隐私保护政策,在实际应用中应当采用温和的方式引导用户完成消息订阅操作。具体来说,可以通过调用 `uni.requestSubscribeMessage()` API 来显示官方样式的通知权限询问框给到前端页面上: ```javascript // 调用微信小程序订阅接口 uni.requestSubscribeMessage({ tmplIds: ['your_template_id'], // 替换成自己的模板ID success(res) { console.log('用户同意接收', res); }, fail(err) { console.error('用户拒绝接收 或 请求失败:', err); } }); ``` 上述代码片段展示了如何利用 `requestSubscribeMessage` 函数来请求用户的订阅许可。当用户点击确认后,则表示其愿意接受来自应用程序的信息提醒;反之则不会接收到任何此类通知[^2]。 #### 发送订阅消息 一旦获得了用户的同意之后,便可以在服务器端准备相应的数据并通过 WeChat Official Account Server 推送给目标设备上的客户端应用。需要注意的是,此处涉及的服务端逻辑不在本文讨论范围内,但通常会涉及到 HTTP POST 请求携带必要的参数至 https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN 地址下执行具体的发送动作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值