精华内容
参与话题
问答
  • 微信小程序订阅消息

    千次阅读 2020-03-02 15:19:21
    消息能力是小程序能力中的重要组成,以便实现服务的闭环和更优的体验。此前的小程序模板消息接口于2020年1月...订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面 订阅消息的使用主要以下几个步骤: 获取...

    消息能力是小程序能力中的重要组成,以便实现服务的闭环和更优的体验。此前的小程序模板消息接口于2020年1月10日下线,2.10.0 版本开始,开发版和体验版小程序将禁止使用模板消息 fomrId。开发者可使用订阅消息功能。订阅消息特点:

    • 订阅消息推送位置:服务通知
    • 订阅消息下发条件:用户自主订阅
    • 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面

    订阅消息的使用主要以下几个步骤:

    1. 获取模板 ID
    2. 获取下发权限
    3. 调用接口下发订阅消息
    1. 获取模板 ID

    在微信公众平台手动配置获取模板 ID:
    登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
    在这里插入图片描述
    初始状态下我的模板中没有模板,需要点击添加按钮添加模板。这里需要说明以下,模板库中有两种类型的模板,一次性订阅和长期订阅,长期订阅只会在一些特定的类目下才有。我这里以一次性订阅为例,选择自己合适的模板,设置模板里面要显示的条目即可,确定后就跟我上面截图一样就会看到了。
    在这里插入图片描述

    这里需要说明的是:一次性订阅和长期订阅。官方社区说明

    • 一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

    • 一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

    2. 获取下发权限

    订阅消息的发送同时还需要用户同意接收,否则用户将不会收到消息。在小程序中需要调用下面API,调起客户端小程序订阅消息界面。注意仔细查看该API文档,有很多细节(坑)。先说一个,这个API只会在真机上才生效,模拟器不行,文章结尾再来说说其他的细节。
    在这里插入图片描述
    如下:

    wx.requestSubscribeMessage({
      // 相当于询问用户愿不愿意接收这个模板的订阅消息	
      tmplIds: ['eggfYknjtIhEUupiB3qhbfBt2dHtqe92ff3qgqui6dk'],
      success(res) {
        console.log('已授权接收订阅消息')
      },
      complete(res) {
        console.log(res)
      }
    })
    

    所以,简单来说,小程序中需要调用上面的API,并且用户需要同意接收,这样才能接收到发送过来的订阅消息。

    3. 调用接口下发订阅消息

    我这边是在java服务端程序测试的。首先需要细看发送订阅消息的API

    3.1 https请求接口:
    POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
    

    参数:access_token,后台接口调用凭据,对应的API

    GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
    

    所以需要在发送前获取该token_access值。

    3.2 post请求体的参数

    post请求体中对应的参数,必须是json格式,我这里值传了必须的三项,说明如下,value里面的数据一定要注意按照文档中的格式,否则会包=报数据格式错误的!
    在这里插入图片描述
    这里面还有一个参数也是需要提前获取的,就是接收消息的用户openid,这个可以在登录时获取,对应API

    GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
    

    这里面有个js_code参数,这个参数可以在小程序端调用wx.login()时获取到。

    到这基本上流程已经介绍清楚了,搞清楚相关参数即可。

    4. 测试

    首先声明,我下面的流程只是作为一次测试,感受下订阅消息的发送效果,实际项目中不要这么整啊,经理会打人的~
    流程:
    在这里插入图片描述
    小程序:
    wxml:

    <button bindtap="permission" style="margin-bottom:20rpx">权限设定</button>
    
    <button bindtap="send">发送消息</button>
    

    js:

    Page({
      onLoad: function () {
      },
    
      permission(){
        wx.requestSubscribeMessage({
          tmplIds: ['eggfYknjtIhEUupiB3qhbfBt2dHtqe92ff3qgqui6dk'],
          success(res) {
            console.log('已授权接收订阅消息')
          },
          complete(res) {
            console.log(res)
          }
        })
    
      },
    
      send(){
        wx.login({
          success(res) {
            if (res.code) {
              console.log(res)
              wx.request({
                url: 'http://自己电脑ip:8090/test/send?code=' + res.code,
                success(res) {
                  // console.log(res.data)
                },
                complete(res) {
                  // console.log(res)
                }
              })
            }
          }
        })
      }
    })
    

    服务端:
    pom.xml

    <dependency>
       <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.62</version>
    </dependency>
    <dependency>
        <groupId>cn.gjing</groupId>
        <artifactId>tools-httpclient</artifactId>
        <version>1.2.6</version>
    </dependency>
    

    controller:

    @RestController
    @RequestMapping("/test")
    public class TestCtrl {
    
        @RequestMapping("send")
        public String getToken(@RequestParam("code") String code){
            System.out.println("code:" + code);
            String token = getToken();
            String openid= getOpenId(code);
    
            Map<String,Object> param = new HashMap<>();
            param.put("touser",openid);
            param.put("template_id","eggfYknjtIhEUupiB3qhbfBt2dHtqe92ff3qgqui6dk");
    
            Map<String,Object> data = new HashMap<>();
            data.put("thing1",new Value("上海市普陀区"));
            data.put("thing4",new Value("空调清洗"));
            data.put("phone_number8",new Value("17635688803"));
            data.put("thing7",new Value("每周六天,8:00~18:00"));
            data.put("date5",new Value("2019-10-25 12:23"));
            param.put("data",data);
            // 注意检查参数的格式,很容易出现问题
            System.out.println("param:" + JSON.toJSONString(param));
    
            String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + token;
            Map result = HttpUtils.post(url, param);
            System.out.println("result=" + result);
            return "success";
        }
    
        private String getToken(){
            String url = "https://api.weixin.qq.com/cgi-bin/token?appid=你的appid&secret=你的appsecret&grant_type=client_credential";
            String result = HttpUtils.get(url);
            Map<String,Object> map = JSON.parseObject(result);
            String access_token = map.get("access_token").toString();
            System.out.println("access_token:" + access_token);
            return access_token;
        }
    
        private String getOpenId(String code){
            String url = "https://api.weixin.qq.com/sns/jscode2session?appid=你的appid" +
                    "&secret=你的appsecret" +
                    "&js_code="+code+"&grant_type=authorization_code";
            String result = HttpUtils.get(url);
            Map<String,Object> map = JSON.parseObject(result);
            String openid = map.get("openid").toString();
            System.out.println("openid:" + openid);
            return openid;
        }
    }
    

    HttpUtils:

    package com.example.demo1.ctrl.util;
    
    import cn.gjing.http.HttpClient;
    import cn.gjing.http.HttpMethod;
    
    import java.util.Map;
    
    public class HttpUtils {
    
        public static String get(String url, Map<String, Object> param) {
            String result = HttpClient.builder(url, HttpMethod.GET, String.class)
                    .param(param)
                    .execute()
                    .get();
    
            return result;
        }
    
        public static String get(String url) {
            String result = HttpClient.builder(url, HttpMethod.GET, String.class)
                    .execute()
                    .get();
    
            return result;
        }
    
        public static Map post(String url, Map<String, Object> param) {
            Map result = HttpClient.builder(url, HttpMethod.POST, Map.class)
                    .body(param)
                    .execute()
                    .get();
            return result;
        }
    }
    
    

    启动服务器,在手机上打开小程序,先在设置中打开调试功能,否则小程序可能无法调用本地服务端接口。先点击权限按钮,允许接收订阅消息,在点击发送按钮,效果图:
    在这里插入图片描述


    补充:
    一次性订阅消息用户允许一次后,只能接收一次消息,再次发送时会显示用户拒收。长期订阅消息则是可以接收多条。

    result={errcode=43101, errmsg=user refuse to accept the msg hint: [NLYvMa06944924]}
    

    如果你勾选了这个“保持以上选择”,那么这个弹框将再也不会出来了~~我这示例中当你再点一次权限按钮,还是能接收到一次消息的,只是弹框不显示了。
    在这里插入图片描述

    展开全文
  • 微信 小程序 订阅消息

    千次阅读 2020-01-03 11:28:32
    微信小程序 订阅消息 如何实现的。 源码,教程,视频教徒 {"msg":{"errcode":43101,"errmsg":"user refuse to accept the msg hint: [lvUAUA09845508]"}} 如何解决 视频演示地址。 ......

    微信小程序 订阅消息 如何实现的。
    源码,教程,视频教徒

    {"msg":{"errcode":43101,"errmsg":"user refuse to accept the msg hint: [lvUAUA09845508]"}}

    如何解决

     

    视频演示地址。

    https://www.bilibili.com/video/av78116901

     

    需要 源码的可以联系我微信

    xiaomao0055

     

     

    展开全文
  • 微信小程序订阅消息后端代码 -php 微信小程序订阅消息封装类 里面有一些注意说明与理解,对于一些坑已经踩平,下载可立即使用
  • 订阅消息的功能较模板消息有所提升,”7天”的限制取消,同时有”一次性”和”永久”订阅.(功能上是这样说的,但是实际开发时发现”永久”订阅还是对小程序的服务类目有要求的,客户的小程序只支持”一次性”订阅) ...
  • 小程序订阅消息 功能介绍 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。 订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消息卡片跳转...

    小程序订阅消息

    功能介绍

    消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。

    • 订阅消息推送位置:服务通知
    • 订阅消息下发条件:用户自主订阅
    • 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面

    使用说明

    步骤一:获取模板 ID
    步骤二:获取下发权限
    详见小程序端消息订阅接口 wx.requestSubscribeMessage
    步骤三:调用接口下发订阅消息
    详见服务端消息发送接口 subscribeMessage.send
    image.png

    image.png

    uni.requestSubscribeMessage({
      tmplIds: [''],
      success (res) { }
    })
    
    • wx.requestSubscribeMessage(Object object)
    • subscribeMessage.send
    <form :report-submit="true" @submit="createOrder" style="display: flex; justify-content: center;">
    </form>
    
    async createOrder(e) {
     try {
      await this.joinFormId(e) //收集formId
     }
    }
    
    payment(info) { //数字现金支付
    let params = info.payment
      params.success = (res) => {
        // #ifdef MP-ALIPAY
        if (res.resultCode != 9000 && res.resultCode != 8000) {
          uni.showToast({
            title: '未支付押金成功!',
            icon: 'none'
          });
          return
        }
        // #endif
        uni.showLoading({
          mask: true,
          title: '正在处理...'
        });
        setTimeout(_ => {
          uni.hideLoading()
          this.goOrder(info.order_sn)
        }, 2000);
      }
      params.fail = (err) => {
        uni.showToast({
          title: '未支付押金成功!',
          icon: 'none'
        });
      }
      uni.requestPayment(params)
    },
    
    joinFormId(e) {
      return new Promise((resolve, reject) => {
        //#ifdef MP-WEIXIN
        var wechat_temp = this.$store.state.user.wechat_temp
        if (!wx.requestSubscribeMessage) {
          resolve()
          return
        }
        wx.requestSubscribeMessage({
          tmplIds: [wechat_temp.lend_success, wechat_temp.return_success],
          success: (res) => {
            console.log('res', res)
            const param = {
              is_lend: res[wechat_temp.lend_success] === 'accept' ? 1 : 0,
              is_return: res[wechat_temp.return_success] === 'accept' ? 1 : 0
            }
            if (param.is_lend || param.is_return) {
              resolve()
              subscribeAuthApi(param).then(response => {
                console.log('subscribeAuthApi', response)
              })
            } else {
              uni.showModal({
                content: '未授权发送通知,将收不到出借、归还通知',
                confirmText: '重新授权',
                cancelText: '直接租借',
    
                success: (res) => {
                  if (res.confirm) {
                    reject()
                    this.request_order = false
                    this.createOrder()
                  } else {
                    resolve()
                  }
                }
              })
            }
          },
          fail: (err) => {
            console.log('ee', err);
            uni.showModal({
              content: '未授权发送通知,请到小程序设置界面开启订阅',
              confirmText: '去开启',
              cancelText: '直接租借',
              success: (res) => {
                if (res.confirm) {
                  reject()
                  wx.openSetting()
                } else {
                  resolve()
                }
              }
            })
          }
        })
        //#endif
        //#ifdef MP-ALIPAY
        console.log('MP-ALIPAY')
        const form_id = e.detail.formId
        if (form_id.indexOf(' ') !== -1) {
          return
        }
        joinFormIdApi({
          form_id
        })
        resolve()
        //#endif
      })
    
    },
    

    image.png

    https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

    用户需要点击“总是保持以上,不再询问”,才可以获取到getSetting返回的用户授权信息
    image.png

    requestMsg(){
     return new Promise((resolve, reject) => {
     wx.requestSubscribeMessage({
     tmplIds: [" -ZwAFL- "],
     success: (res) => {
      if (res[' -ZwAFL- '] === 'accept'){
      wx.showToast({
      title: '订阅OK!',
      duration: 1000,
      success(data) {
      //成功
      resolve()
      }
      })
      }
     },
     fail(err) {
      //失败
      console.error(err);
      reject()
     }
     })
     })
     }
    
    openMsg() {
        var that = this
        // 获取用户的当前设置,判断是否点击了“总是保持以上,不在询问”
        wx.getSetting({
            withSubscriptions:true,  // 是否获取用户订阅消息的订阅状态,默认false不返回
           success(res) {
              if(res.authSetting['scope.subscribeMessage']) { // 用户点击了“总是保持以上,不再询问”
                 uni.openSetting({ // 打开设置页
                   success(res) {
                     console.log(res.authSetting)
                   }
                 });
              }else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息
                 var templateid = that.setting.templateid.map(item => item.tempid)
                 uni.requestSubscribeMessage({
                   tmplIds: templateid,
                   success (res) {
                      console.log(res)
                   },
                   fail:(res) => {
                      console.log(res)
                   }
                 }) 
              }
           }
        })
    },
    

    模版消息链接
    fromid怎么成这样了

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html

    image.png

    展开全文
  • 2019年10月12日微信开放了小程序订阅消息的功能。按官方的说法,目前的模板消息在实现小程序服务闭环上存在缺陷: 1. 部分开发者在用户无预期或未进行服务的情况下发送与用户无关的消息,对用户产生了骚扰; 2. ...

    2019年10月12日微信开放了小程序订阅消息的功能。按官方的说法,目前的模板消息在实现小程序服务闭环上存在缺陷:

    1. 部分开发者在用户无预期或未进行服务的情况下发送与用户无关的消息,对用户产生了骚扰;
    2. 模板消息需在用户访问小程序后的 7 天内下发,不能满足部分业务的时间要求

    模板消息确实存在上述的硬伤,不利于小程序的用户留存和用户体验。为了解决这些问题,微信官方推出了用户订阅消息功能。我在微慕专业版上加了订阅消息的功能,并验证了这个功能。这个功能是否能都达到官方的预期,这个我感觉不那么乐观。这里我先说我的感受:目前的订阅消息还很不完善,基本是“半成品”,后续还有很大的优化空间。

    目前,官方只开放了“一次性订阅消息”,尚未开放“长期性订阅消息”,因此我只尝试了“一次性订阅消息”。

    一次性订阅消息:用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

    订阅消息推送位置:服务通知
    订阅消息下发条件:用户自主订阅
    订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面

    以下我简单说明订阅消息的开发过程和使用体验。

    一.订阅消息的开发

    1.获取订阅消息的模板ID

    在微信小程序的管理后台,在左侧“功能”菜单,选择“订阅消息”,然后点击“添加”

    然后选择你需要的消息模板,并配置关键词。

    配置完成后,如下图所示。

    值得关注的是,在配置好的模板详情页面里的“详细内容”很重要,这个就是开发订阅消息时需要遵循的消息格式,这个格式和模板消息有细微的差别

    根据微慕小程序的需要,我选用了“新的评论提醒”和“内容更新提醒”这两个消息模版。前者用于提醒发表话题或文章的作者,有新的话题或文章评论,增强作者与读者之间的交流互动;后者是提醒订阅用户,小程序有新的文章发布,引导用户回归小程序

    订阅消息申请模板的时候,需要选择所属类目,只能选择当前小程序相关的类目模板,对于模板消息不需要选择对应类目。如果删除小程序类目,就会把订阅消息模板一起删除。因此删除类目要小心谨慎。

    2.触发用户订阅,获取下发的权限
    触发用户订阅,微信小程序提供的api是: wx.requestSubscribeMessage,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。

    注意:微信小程序开发工具尚不支持此功能,在开发工具触发订阅的api,会提示:
    requestSubscribeMessage:fail 开发者工具暂时不支持此 API 调试,请使用真机进行开发

    update:2020年5月18日,日前订阅消息已经支持微信小程序开发工具。

    调用api的代码示例如下:

    wx.requestSubscribeMessage({
    tmplIds: ["模板A","模板B"],
    success: function (res) {
    //成功
    },
    fail(err) {
    //失败
    console.error(err);
    }
    })

    wx.requestSubscribeMessage(Object object) 的回调函数object.success 参数有两个:errMsg和TEMPLATE_ID; 接口调用成功时errMsg值为’requestSubscribeMessage:ok’。TEMPLATE_ID是动态的键,即模板id,值包括’accept’、’reject’、’ban’。’accept’表示用户同意订阅该条id对应的模板消息,’reject’表示用户拒绝订阅该条id对应的模板消息,’ban’表示已被后台封禁。例如

    { errMsg: “requestSubscribeMessage:ok”, zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: “accept”} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息。

    个人觉得这个动态键不是特别合理,代码处理起来有些麻烦,如果改成静态键的json格式比较方便处理,例如:
    {
    errMsg:"requestSubscribeMessage:ok",
    result: [
    { templateId:"zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE",
    status:"accept"
    }
    ]
    }

    在手机上调用此api方法会调出订阅消息的界面,如下图所示:

    关于这个订阅消息的授权有几点要注意:

    1) 在确认提示框里,如果用户选择“取消”表示拒绝(取消)订阅消息,选择“允许”表示用户订阅一次消息。

    2) 如果用户不勾选“总是保持以上选择,不再询问”,那么每次用户触发都会弹出提示框。

    3) 如果用户勾选“总是保持以上选择,不再询问”,那么将再也不会唤起这个对话框。同时,如果选择“取消”,那么以后每次调用这个api的时候,都会自动拒绝;如果选择“允许”,那么以后每次调用此api,都会自动允许授权。

    目前小程序没有提供获取用户是否授权订阅消息的方法。通过wx.openSetting 方法无法获取用户是否授权消息订阅的信息,scope 列表没有订阅消息的内容。

    如果想从自动拒绝转换到自动自动运行,需要打开小程序的设置去配置。设置方法:点击小程序右上角的三个点,打开如下对话框

    然后选择“设置”,在设置项里选择“订阅消息”

    4)对于同一种消息,用户可以订阅多次,订阅多少次,就会收到多少次订阅消息,这个订阅次数是否有上限,官方没有说明,初步判断是不限的。但是,微信不会提供订阅的次数,因此需要在小程序的后端服务里存储用户订阅的次数。因此,我在微慕小程序专业版里,提供了一个给用户多次订阅的设置,并记录用户订阅的次数。

    如果用户需要某个消息服务,可以订阅多次,当然也可以在点击“订阅”的对话框里选择“取消”,“取消”一次也就减少一次订阅。

    5)对于支付的场景,也需要用户确认是否订阅,这个我觉得不合理,支付后给用户一个订单推送消息应该是刚性需求,不需要再询问一遍用户是否订阅。

    2.调用接口下发订阅消息

    订阅消息下发的接口是小程序后台服务端调用:subscribeMessage.send,此方法类似下发模板消息的方法,详细调用说明见参考官方的链接:
    https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

    订阅消息的下发接口方法和模板消息稍有不同,

    模板消息的json格式如下

    "data": {
    "keyword1": {
    "value": "内容1",
    "color": "#000"
    },
    "keyword2": {
    "value": "内容2",
    "color": "#000"
    }
    }

    而订阅消息的json格式如下:

    "data": {
    "thing1": {
    "value": "内容"
    },
    "number2": {
    "value": 20
    }

    订阅消息的字段key是和数据类型有关,value的参数需要严格按照设置的类型提交,如果不按类型提交,会导致发送失败。同时如果是文本型的内容,字数也有限制,超过限制也会发送失败,但具体字数是多少,官方没有给出,同时中英文混合计算的长度也有差异,据我目前测试25个中文字符是可以的。希望官方能给出具体的字符长度限制的明确数字。

    如果调用下发的次数大于用户的订阅次数,调用接口下发订阅消息会返回失败。报如下错误

    3.订阅消息参数值内容限制说明

    符号表示除中文、英文、数字外的常见符号,不能带有换行等控制字符。 时间格式支持HH:MM:SS或者HH:MM。 日期包含年月日,为y年m月d日,y年m月、m月d日格式,或者用‘-’、‘/’、‘.’符号连接,如2018-01-01,2018/01/01,2018.01.01,2018-01,01-01。 每个模板参数都会以类型为前缀,例如第一个数字模板参数为number01.DATA,第二个为number02.DATA

    例如,模板的内容为:

    姓名: {{name01.DATA}}
    金额: {{amount01.DATA}}
    行程: {{thing01.DATA}}
    日期: {{date01.DATA}}

    则对应的json为

    {
    "touser": "OPENID",
    "template_id": "TEMPLATE_ID",
    "page": "index",
    "data": {
    "name01": {
    "value": "某某"
    },
    "amount01": {
    "value": "¥100"
    },
    "thing01": {
    "value": "广州至北京"
    } ,
    "date01": {
    "value": "2018-01-01"
    }
    }
    }

    二.订阅消息使用心得

    1.订阅消息虽然把订阅的授权的交给了用户,但是也增加了用户使用难度,同时,一次性订阅只能收到一次,操作起来比较繁琐,如果不是刚需用户可能会首次就拒绝了这个服务,要想重新获取授权,需要用户自己打开小程序设置里去配置,颇为麻烦,小程序没有提供更简便的方法去唤起。

    2.小程序的服务商为了获得更多给用户发送订阅消息的次数,肯定会想方设法去埋点引诱用户去点击订阅,这种诱导估计也是违规。

    3.用户使用门槛和学习比较高,比如某个预约的服务,原来的场景是用户只要有提交表单,小程序就可以推送消息给用户,但是现在需要用户主动去订阅,无形中多了一步,如果用户不熟悉订阅消息或者直接点了“取消”,小程序就没法通知到用户了,用户可能因此错失服务,对商家和用户都是损失。

    4.微信小程序将采用订阅消息,并逐步取消模板消息,虽然微信官方试图在方便用户和不打扰用户这两种选择里去寻求平衡,但订阅消息目前的模式恐怕无法达到这个期望,至少在我看来,无论对小程序的服务商,还是小程序的用户,都感到不方便。

     

    ---------------------------------------------

    原文链接:https://www.watch-life.net/wechat/subscribe-message.html

    展开全文
  • 微信小程序订阅消息功能实现

    千次阅读 2020-02-18 16:43:07
    本篇博客介绍如何自建服务器使用微信小程序订阅消息功能,消息能力是小程序能力中的重要组成,为实现服务的闭环和更优的体验。使用方法步骤如下: 步骤一:获取模板 ID 步骤二:获取下发权限 步骤三:调用接口...
  • uniapp微信小程序订阅消息

    千次阅读 2020-05-21 22:03:32
    'use strict'; exports.main = async (event, context) => { const token = event.token; const openid = event.openid; const name = event.custname; const phone = event.custphone;... const dizhi = event....
  • C#微信小程序订阅消息

    千次阅读 2020-02-25 17:02:29
    小程序订阅消息官方配置教程文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html wxml页面代码: <view> <button class="btn" type="primary" ...

空空如也

1 2 3 4 5 ... 20
收藏数 515
精华内容 206
关键字:

微信小程序订阅消息

微信小程序 订阅