当前位置:   article > 正文

uniapp兼容H5和小程序订阅消息授权开发封装,使用方便_微信网页授权订阅消息

微信网页授权订阅消息

本文使用 uniapp 框架开发,因为H5的订阅消息和小程序的订阅消息的授权流程不一样,但是很多地方需要使用授权,所以我封装了一个兼容H5和小程序订阅消息授权的方法,使用比较方便,希望能够帮助到你,实测可用。如果有可以改进的地方,欢迎评论指出。如果对你有帮助就点个赞吧!

下面简单看下H5订阅消息发送和小程序订阅消息发送的区别:

简单说H5就是需要重定向到微信的一个地址,然后微信回调告诉你用户是否授权,而小程序是有官方提供的 API ,调用API就能拿到回调信息告诉你用户是否授权。

下面看看官方文档的介绍:

1、公众号H5订阅消息发送流程

2、小程序订阅消息授权

 

最后,来看看我是怎么实现的吧!

页面使用我封装的方法的方式:

  1. import common from '@/util/common.js';
  2. <!-- 订阅消息监听和发送,兼容微信小程序和H5 -->
  3. onLoad: function(options) {
  4. common.Init.call(this);
  5. // #ifdef H5
  6. this.monitorSubscribeMsgAuthorize(options); //监听订阅消息授权回调
  7. // #endif
  8. }
  9. <!-- 页面调用订阅消息授权 场景id 模板id-->
  10. this.subscribeMsgAuthorize(scene_id, template_id)

封装的js:common.js

  1. function Init(e) {
  2. const that = this;
  3. // #ifdef H5
  4. // 监听订阅消息授权回调
  5. that.monitorSubscribeMsgAuthorize = (options) => {
  6. if (options.action === 'confirm') {
  7. const {
  8. class_id
  9. } = JSON.parse(uni.getStorageSync('courseInfo') || '{}');
  10. this.$request(this.$api.Weike.subscribe, {
  11. class_id: class_id
  12. }).then(res => {
  13. //授权成功的处理
  14. uni.showToast({
  15. title: res.data.msg,
  16. icon: 'none'
  17. });
  18. });
  19. }
  20. }
  21. // #endif
  22. // 订阅消息授权
  23. that.subscribeMsgAuthorize = (scene_id, template_id) => {
  24. // #ifdef MP-WEIXIN
  25. uni.requestSubscribeMessage({
  26. tmplIds: [template_id],
  27. success(res) {
  28. console.log(res)
  29. if (res.errMsg == 'requestSubscribeMessage:ok') {
  30. this.$request(this.$api.Weike.subscribe, {
  31. 'class_id': scene_id
  32. }).then(res => {
  33. uni.navigateTo({
  34. url: `/pages/classRoom/courseList/courseList?id=${scene_id}`
  35. });
  36. })
  37. }
  38. }
  39. })
  40. // #endif
  41. // #ifdef H5
  42. //记录场景值到缓存,用户授权成功后传给后端
  43. uni.setStorageSync('courseInfo', JSON.stringify({
  44. class_id: scene_id
  45. }));
  46. let redirect_url = encodeURIComponent(location.href);
  47. let appId = getApp().globalData.wechat_appid
  48. location.href =
  49. `https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=${appId}&scene=${scene_id}&template_id=${template_id}&redirect_url=${redirect_url}#wechat_redirect`;
  50. // #endif
  51. }
  52. }
  53. module.exports = {
  54. Init: Init
  55. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/79468
推荐阅读
相关标签
  

闽ICP备14008679号