【经验分享】支付宝小程序订阅消息功能实操(前端篇)|江海计划

简介: 【经验分享】支付宝小程序订阅消息功能实操(前端篇)|江海计划

前言

小程序的属性是即用即走,如果用户访问完你的小程序后就流失了,那么怎样让用户再次回来使用你的小程序呢?

目前的手段有:发短信召回(短信里携带scheme地址,点击直接拉起小程序)以及这篇文章将要介绍的订阅消息功能。

先看下效果图:

简单来说就是:通过官方提供的能力,实现推送你的小程序消息到用户的支付宝首页,用户查看到后点击即可跳回你的小程序。

举个例子:你在青团社进行职位投递,当你投递后,商家录取你的投递信息,通过服务通知推送到支付宝app的首页或者push推送到你的手机锁屏界面,方便你快速了解当前投递进度情况。

前面简单的说了下订阅消息是用来干嘛的,那么接下来将会带你实操如何接入订阅消息功能。

订阅消息目前有两种调用方式:一种是基础库1.x版本的订阅消息插件、一种是基础库2.7.10以上的使用api的方式调用。

基础库1.x版本的插件调用方式已经淘汰了,这里就不做赘述了,强烈推荐大家更新到基础库2.x,然后使用2.7.10基础库提供的my.requestSubscribeMessage()方法

使用该能力需要挂载 消息(商家消息功能包、个人、企业主体都可调用

注意点

  • 调用消息订阅接口,一次性最多传入三个模板 id。
  • 基础库 v2.x 从 2.7.10 开始支持,(个人建议在小程序后台设置里,设置小程序线上最低基础库版本为2.7.10,同时观察影响人数,设置后低于该基础库的用户会提示更新支付宝App,如果不设置线上最低基础库版本,那么调用时会提示该api is not a function)
  • 基础库版本低于 2.7.15,不能和 web-view 组件共用,会被遮盖。
  • 可主动触发、可手动触发,即:可在onLoad里调用直接弹出提醒订阅,也可点击按钮后再触发订阅弹窗,支付宝官方未做限制。这里建议大家让用户手动触发,小程序首页onLoad里不要主动触发,在用户未做任何操作的情况下弹出,打断了用户的操作行为大概率审核不过
订阅消息分长期订阅消息,以及一次性订阅消息

长期订阅消息:订阅一次可以推送多次(单天推送有频率限制,比如一天只能推一次),不用每次都弹窗

一次性订阅消息:订阅一次推送一次,每次都会有订阅弹窗。

接下来实操如何使用:

通过选取配置了该小程序的订阅消息ID(https://opendocs.alipay.com/mini/01rnqx)。

这里吐槽一下:订阅消息入口在运营管理里,开发者查看时需要注意,初次使用以为在开发管理页面。

首先先写一个弹窗,引导用户点击订阅


目前模板ID我们是配置在数据库,使用不同的key去获取,没写死在代码里,方便替换:
// 获取订阅消息id并唤起订阅消息弹窗
handleSubscribe() {
   let postData = {
     key: 'ZFB_XXX_XXX_LIST'
   }
   this.$request.post('xxx', postData).then((res) => { // this.$request为封装的request请求方法。
     if (res.success) {
       my.requestSubscribeMessage({
         entityIds: res.data, // 这里获取到模板id数组,格式为['xxxxx', 'xxxxx']
         success: (res) => {
           const { result: { subscribeEntityIds = [] } = {} } = res // 返回已订阅的模板id,会将历史已订阅一起返回
           if (subscribeEntityIds.length) {
             const templateIds = subscribeEntityIds.join(',') // 将数组格式转为字符串格式,用于提交给服务端
             console.log('templateIds---->', templateIds)
             my.showToast({  // 提示用户订阅成功,也可用my.showToast
               content: `消息订阅成功`,
               type: 'success'
             })
             this.pushMerChant(templateIds) // 将用户选择的ID提交给服务端
           }
         },
         fail: err => { // 错误提示
           console.log(err)
         }
       })
     } else {
       util.toast(res.msg || '服务器错误,请稍后重试')
     }
   })
 },
 // 上报用户订阅的模版id
 pushMerChant(templateIds) {
   const aliUserId = util.getStorageSync('aliUserId') || '' // 获取缓存里的userid
   let postData = {
     aliUserId, // 用户的userId,用于给该用户推送模板消息
     templateIds  // 用户订阅的模板id
   }
   this.$request.post('/xxx/subscribe', postData)
 },
 
 // 以上为我们业务内的实现方式,而你们可以直接这样使用:
 my.requestSubscribeMessage({
   entityIds: ['xxxxx', 'xxxxx'],
   success: (res) => {
   const { result: { subscribeEntityIds = [] } = {} } = res // 返回已勾选的模板id
   if (subscribeEntityIds.length) {
      my.showToast({  // 提示用户订阅成功
        content: `消息订阅成功`,
        type: 'success'
      })
     }
  },
  fail: err => { // 错误提示
    console.log(err)
  }
})

调试时需要注意
  • IDE里订阅成功后,无法清除订阅授权记录,即:允许订阅后IDE里无法再弹出弹窗(目前该需求已反馈IDE产品童鞋,正在排期支持中~)
  • 真机清除授权数据:点击右上角三个点 > 点击弹窗里的设置 > 找到消息管理 点击你已订阅的该模板前的小icon即可解除授权。
为了不打扰到用户:

长期订阅消息:建议未订阅或者拒绝的用户弹窗一天一次,已订阅的就不再弹窗。

一次性订阅消息在用户有操作后按实际情况判断是否弹窗。

如果用户拒绝订阅怎么唤醒订阅:

用户拒绝并且点了不再提醒,大概率是不希望你打扰到TA,对于该类用户你可尝试:

通过订阅关系查询接口(https://opendocs.alipay.com/mini/02s1fd)查询用户用户是拒绝订阅还是保持拒绝订阅(拒绝订阅,不再提醒), 通过弹窗的方式引导用户开启订阅。(不建议使用

后语

至于大家发现的我的订阅弹窗里没有 “拒绝,不再提醒”,这是因为我们使用的是客户端渲染的消息订阅组件,这种方式官方不推荐。

因为客户端消息订阅组件小程序框架提供的消息订阅组件 是两套独立开发维护的,不保证 小程序的订阅消息新能力/新样式 在客户端消息订阅组件上提供,也不保证客户端订阅组件的更新率或者及时的bugfix。

我们使用该api是为了盖住小程序的tabbar,否则tabbar+订阅弹窗一起显示,达不到UI想要的效果。因未对外开放,所以这里就不赘述客户端渲染的消息订阅组件了。

欢迎大家有问题的反馈问题,有不懂的评论留言或钉钉私信。

目录
相关文章
|
8月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
460 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
7月前
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
2524 64
|
7月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
728 12
|
9月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
2921 12
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
582 4
|
移动开发 小程序 前端开发
小程序的前端插件都有哪些?
【10月更文挑战第16天】小程序的前端插件都有哪些?
282 1
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
1676 1
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
724 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
前端开发 JavaScript Shell
深入解析前端构建利器:webpack核心概念与基本功能全览
深入解析前端构建利器:webpack核心概念与基本功能全览—
269 1
|
前端开发 JavaScript
前端中的“+”连接符,居然有鲜为人知的强大功能!
【10月更文挑战第9天】前端中的“+”连接符,居然有鲜为人知的强大功能!
177 0
前端中的“+”连接符,居然有鲜为人知的强大功能!

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    447
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    167
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    179
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    138
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    228
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    317
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    148
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    80
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    145
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    197
  • 下一篇
    oss云网关配置