微信小程序订阅消息wx.requestSubscribeMessage使用要点和requestSubscribeMessage:can only be invoked by userTAPgestur

22 篇文章 0 订阅
20 篇文章 0 订阅

注意事项

  • 一次性模板 id 和永久模板 id 不可同时使用。
  • 低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
  • 2.8.2 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。
  • 2.10.0 版本开始,开发版和体验版小游戏将禁止使用模板消息 fomrId。
  • 使用前建议阅读 小游戏订阅消息使用指引
  • 一次授权调用里,每个tmplId对应的模板标题不能存在相同的,若出现相同的,只保留一个。

使用方法

wx.requestSubscribeMessage({
  tmplIds: ['模板id'],
  success (res) {
    console.log(res)
    res === {
       errMsg: "requestSubscribeMessage:ok",
       "zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE": "accept"
    }
  }
})

requestSubscribeMessage:fail can only be invoked by user TAP gesture.
如何造成这个问题的原因:

  setTimeout(() => {
    wx.requestSubscribeMessage({
	  tmplIds: ['模板id'],
	  success (res) {
	    console.log(res)
	    res === {
	       errMsg: "requestSubscribeMessage:ok",
	       "zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE": "accept"
	    }
	  }
	})
  }, 1000);

这个代码看似没有问题,但是事实上requestSubscribeMessage这个API是不支持异步操作的,官方文档也没有虽然官网文档没有说明,但调用wx.requestSubscribeMessage授权之前是不能有异步操作的,否则会报错,提示你授权不是通过bindtap事件触发的

如何解决这个问题?

只能通过使用 Promise 将其他异步任务转换为同步任务,否则你的订阅消息界面是不会出现,甚至也会报错

在这里插入图片描述
这里是我封装的服务通知,尽量都使用Promise,这样会规避很多的大坑~~

 // 小程序服务通知
  static weappInform=(tmplIds)=>{
    return new Promise((resolve, reject)=>{
      wx.requestSubscribeMessage({
      tmplIds,
      success: res => {
        resolve(res)
      },fail:(res)=>{
        reject(res)
      }

    })})
    
  } 
my.requestSubscribeMessage微信小程序提供的一个API,用于向用户发起订阅消息的请求。通过该API,我们可以向用户请求授权以订阅指定的消息模板。 根据引用,要查询微信通知订阅列表的API,可以使用wx.getSetting方法,并在配置中将withSubscriptions设为true。查询结果可以在res.subscriptionsSetting.itemSettings中找到,其中的key:value对表示模板ID和接收状态的对应关系。 引用提到了订阅授权次数和收到消息次数之间的关系。用户需要授权一次才能收到一次订阅消息,前提是用户已经打开通知接收并将对应模板的通知状态设置为接收状态。每收到一次通知,就会消耗一次对应的授权允许次数。即使用户勾选了不再提示,下次订阅授权仍然需要用户触发。 根据引用的场景描述,如果是一般需要订阅通知发出的场景,可以由用户手动触发订阅授权,例如在下单或提交按钮点击时调用订阅API。只是在首次订阅时,可能会有弹窗提示与否的区别。如果是无法让用户手动触发授权订阅或需要发送多条订阅消息的中间态场景,订阅API最多一次可以授权3条模板。 综上所述,my.requestSubscribeMessage是用于向用户发起订阅消息请求的API,可以通过wx.getSetting方法查询微信通知订阅列表,授权次数和消息次数是一对一关系,而且每次订阅都需要用户的触发。在不同场景下,可以根据需求选择手动触发订阅或自动触发订阅,并且一次订阅最多可以授权3条模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值