uniapp微信小程序订阅通知

背景

下方代码是微信小程序中一个登录功能的核心实现,主要通过用户手机号码完成登录,并引导用户订阅消息。为了让普通读者也能理解它的逻辑,我会用生活中的例子来类比说明。


功能拆解与通俗解释

1. 检查用户是否同意服务条款和隐私协议
if (!this.checked[0]) { uni.$u.toast("请先同意服务条款和隐私协议"); return; }
  • 通俗解释
    • 假设你去餐厅吃饭,服务员会问你:“您是否同意我们的用餐规则?” 如果你不点头同意,他们就不会给你上菜。
    • 这里的 this.checked[0] 就像你点头的动作。如果用户没有勾选“同意服务条款和隐私协议”,程序就会弹出提示:“请先同意服务条款和隐私协议”,然后停止后续操作。

2. 获取用户手机号码并登录
const { code, encryptedData, iv } = ev.detail;
const res = await login({ sjhm: code, yzm: "001", });
const { user_info, accessToken } = res.data;
setToken(accessToken);
uni.setStorageSync("user_info", user_info);
  • 通俗解释
    • 用户点击“手机号快捷登录”按钮后,微信会返回一些加密数据(codeencryptedData 和 iv),这些数据就像你的身份证号码,用于证明你是谁。
    • 程序把这些数据发送到后台服务器进行验证(调用 login 接口)。后台验证通过后,会返回两个重要的东西:
      • 用户信息user_info):相当于你的会员卡,记录了你的身份信息。
      • 访问令牌accessToken):相当于一张临时通行证,用来证明你已经登录成功。
    • 程序会把这两个东西存储起来,方便后续使用。

3. 根据用户类型跳转页面
const userInfo = uni.getStorageSync('user_info');
if (userInfo.yhlx === '2') { 
    uni.reLaunch({ url: "/pages/index/indexHb" });
} else { 
    uni.reLaunch({ url: "/pages/index/index" });
}
  • 通俗解释
    • 不同类型的用户看到的内容可能不一样。比如,普通会员和 VIP 会员进入餐厅后,可能会被引导到不同的包间。
    • 这里的 yhlx 就是用来区分用户类型的字段:
      • 如果是 2,就跳转到特殊首页(indexHb)。
      • 否则,跳转到普通首页(index)。

4. 微信登录并请求订阅消息
wx.login({ 
    success: function(res) { 
        if (res.code) { 
            console.log('登录凭证:', res.code);
            getWxCode({ code: res.code }); 
        } 
    }, 
    fail: function(err) { 
        console.error('调用wx.login失败:', err);
    }, 
    complete() { 
        uni.showModal({ 
            title: '温馨提示', 
            content: '为了更好的让您了解到预警信息,需要您同意订阅服务',
            confirmText: "同意",
            cancelText: "拒绝",
            success: function(res) { 
                if (res.confirm) { 
                    uni.requestSubscribeMessage({ 
                        tmplIds: ['模板id'],                                                         
                        success(res) { 
                            console.log(res); 
                        }, 
                        fail(err) { 
                            console.log(err); 
                        }, 
                        complete() {} 
                    }); 
                } 
            } 
        }); 
    } 
});
  • 通俗解释
    • 微信登录
      • 微信登录就像你在餐厅门口领了一张入场券(res.code),这张券可以用来换取更详细的信息(如 openIdsessionKey 等)。
      • 程序会把这张券发给后台(调用 getWxCode),让后台记录你的身份。
    • 请求订阅消息
      • 假设餐厅希望在有优惠活动时通知你,他们会问你:“我们想给您发送优惠信息,您同意吗?”
      • 程序弹出一个模态框(uni.showModal),询问用户是否同意接收消息。
      • 如果用户点击“同意”,程序会调用微信的 requestSubscribeMessage 接口,让用户订阅指定的消息模板(tmplIds)。
      • 如果用户点击“拒绝”,程序不会强制订阅,但可能会记录用户的决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小佟Q_Q!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值