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

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

前言

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

目前的手段有:发短信召回(短信里携带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想要的效果。因未对外开放,所以这里就不赘述客户端渲染的消息订阅组件了。

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

目录
相关文章
|
11天前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
116 12
|
25天前
|
小程序 前端开发 关系型数据库
基于Uniapp+php校园小程序,校园圈子论坛系统功能,校园跑腿二手交流功能设计
校园圈子论坛及综合服务平台集成了校园跑腿、兼职信息、外卖团购、闲置交换、租赁服务、表白墙等多功能模块,提供一站式校园生活解决方案。系统采用uniapp前端和PHP后端开发,支持多城市、多学校切换,配备分站式后台管理,确保稳定性和安全性。通过融云IM SDK实现即时通讯功能,增强用户互动与粘性。适用于大学校园、城市及社区圈子,满足多样化需求,提升便捷体验。
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
2月前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
3月前
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
131 4
|
3月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
4月前
|
移动开发 小程序 前端开发
小程序的前端插件都有哪些?
【10月更文挑战第16天】小程序的前端插件都有哪些?
76 1
|
4月前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
171 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
4月前
|
前端开发 JavaScript
前端中的“+”连接符,居然有鲜为人知的强大功能!
【10月更文挑战第9天】前端中的“+”连接符,居然有鲜为人知的强大功能!
67 0
前端中的“+”连接符,居然有鲜为人知的强大功能!
|
4月前
|
小程序 Linux Python
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
46 1

热门文章

最新文章

  • 1
    【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 5
    详解智能编码在前端研发的创新应用
  • 6
    巧用通义灵码,提升前端研发效率
  • 7
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 8
    智能编码在前端研发的创新应用
  • 9
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 10
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目