uniapp 微信小程序订阅消息封装、兼容支付宝

2022-10-24  本文已影响0人  轩轩小王子
1.由于项目中,用到消息订阅的地方有点多,特地封装了一下,以便项目中使用。

调用后台接口拿到模板id

此处具体问题具体分析,我觉得也可以前端写死

// 获取消息id msgType: placeOrder 下单  purchaseMemberCard 单独购买会员卡 myCoupon 我的优惠券
getMessageTemplateIds(msgType = 'placeOrder') {
            let params = {
                tenantId: this.userInfo.serProviderId,
                messageMallType: "WX"
            }
            if (msgType === 'myCoupon') {
                params.messageTypeList = ["couponTimeOut", "holidayActivity", "svipTimeOut"];
            } else if (msgType === 'purchaseMemberCard') {
                params.messageTypeList = ["couponTimeOut", "holidayActivity", "svipTimeOut"];
            } else {
                params.messageTypeList = ["sendCoupon", "holidayActivity", "svipTimeOut"];
            }
            this.$snbc.$service.$mp.getMessageTemplateIds(params).then((res) => {
                if (res.code === '000000' && res.result.length > 0) {
                    this.messageTemplateIds = res.result;
                }
            })
        },
订阅消息
// 订阅消息
        subMessage(cb) {
            // #ifdef MP-WEIXIN
            try { // 避免 uni.requestSubscribeMessage 报错
                uni.requestSubscribeMessage({
                  tmplIds: this.messageTemplateIds,
                  complete() { // 无论允许、拒绝 都要继续走
                    cb();           
                  }
                })
            } catch(e) {
                cb();
            }
            // #endif
            // #ifdef MP-ALIPAY
            cb();
            // #endif
        }
运用(先拿到模板id,点击按钮时再触发订阅)
onLoad() {
        this.getMessageTemplateIds('myCoupon');
    },
this.subMessage(this.goMyCoupons);
goMyCoupons() {
    uni.navigateTo({
        url: '/pages/myCoupons/myCoupons'
        });
}
上一篇 下一篇

猜你喜欢

热点阅读