请教一个微信小程序的问题

有个问题请教一下,在微信小程序的订阅消息中,用户订阅消息后需要马上发给他吗?
第一种情况就是 用户点击同意订阅后 把模板id和用户id存redis,到发送的时候判断redis里是否有这个模板id和用户id,有就执行发送逻辑。
第二种情况就是 不管用户是否同意 到发送的时候都走发送逻辑,不管他能否接受到。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

订阅消息后怎么会马上发送呢?所谓订阅,就是在适当时机发送。
首先你得申请模板,比如支付成功模板,申请下来模板ID,将模板ID(最多3个)全返回前端,前端在点击按钮时,调用 requestSubscribeMessage 把模板ID发给微信,调起订阅组件,用户操作后微信返回各个模板ID的订阅情况, 模板ID => 接受|拒绝,前端把这个数组发送给后端,后端把接受订阅的模板ID保存起来,然后业务逻辑在适当时机查询到模板ID,调用发送接口用户就收到了,拒绝的模板ID没用,发了用户也收不到。关于微信订阅,用户拒绝某个模板之后下次调起订阅组件时就不显示了,就算用户想订阅也找不到,这时候可能你需要在调起订阅组件之前调起 getSetting,看看用户是否拒绝过,如果拒绝过可以再问问用户要不要去设置那里再打开?用户同意的话调用 openSetting 这时候就到设置界面了,用户可以查看到每个订阅接受了还是拒绝了,用户操作之后返回时,再调起 requestSubscribeMessage 订阅组件,拒绝过的如果用户在设置里打开了又会出现了。一般可以存数据库,因为模板ID一般和其他数据绑定的,比如场景、用户、某个产品、是否已消费(一次性订阅消费了就没用了)等, ['template_id', 'paysuccess', 'userid', 'chanpin_id', 'isconsume'] 等,所以存数据库好点,好查询,也便于观察发送成功情况。

2个月前 评论
讨论数量: 8

订阅一次就可以发送一次,时间没有限制

2个月前 评论

@Alone88 假如有个订单支付成功的通知,在支付回调里就把发订阅消息的代码固定写在那里吗?一般需不需要记录用户是否同意发送?

2个月前 评论
Trace92 2个月前
轻描淡写 (作者) (楼主) 2个月前
php_yt 2个月前
轻描淡写 (作者) (楼主) 2个月前

看你们业务量了,如果业务量不大,就统一发不用记录。业务量特别大,那可能就影响性能了,那就需要注意方案了

2个月前 评论

订阅消息后怎么会马上发送呢?所谓订阅,就是在适当时机发送。
首先你得申请模板,比如支付成功模板,申请下来模板ID,将模板ID(最多3个)全返回前端,前端在点击按钮时,调用 requestSubscribeMessage 把模板ID发给微信,调起订阅组件,用户操作后微信返回各个模板ID的订阅情况, 模板ID => 接受|拒绝,前端把这个数组发送给后端,后端把接受订阅的模板ID保存起来,然后业务逻辑在适当时机查询到模板ID,调用发送接口用户就收到了,拒绝的模板ID没用,发了用户也收不到。关于微信订阅,用户拒绝某个模板之后下次调起订阅组件时就不显示了,就算用户想订阅也找不到,这时候可能你需要在调起订阅组件之前调起 getSetting,看看用户是否拒绝过,如果拒绝过可以再问问用户要不要去设置那里再打开?用户同意的话调用 openSetting 这时候就到设置界面了,用户可以查看到每个订阅接受了还是拒绝了,用户操作之后返回时,再调起 requestSubscribeMessage 订阅组件,拒绝过的如果用户在设置里打开了又会出现了。一般可以存数据库,因为模板ID一般和其他数据绑定的,比如场景、用户、某个产品、是否已消费(一次性订阅消费了就没用了)等, ['template_id', 'paysuccess', 'userid', 'chanpin_id', 'isconsume'] 等,所以存数据库好点,好查询,也便于观察发送成功情况。

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!