您的位置:

小程序消息推送怎么实现

一、小程序消息推送怎么关闭

小程序消息推送是小程序的一个重要功能,但在某些情况下,用户可能需要关闭消息推送。小程序提供了简单的设置,用户可以在小程序内部关闭消息推送。

在小程序入口页面,点击右上角的设置按钮,然后选择“消息通知”,即可进入消息推送设置页面。在该页面上,用户可以对小程序的消息推送进行关闭或开启。

二、小程序实现公众号消息推送

小程序与公众号有很多相似的功能,其中就包括消息推送。小程序可以实现向公众号用户推送消息的功能。

实现公众号消息推送的前提是,要进行小程序与公众号的绑定。在小程序的开发者工具中,选择“设置”->“第三方设置”,输入公众号的appId和appSecret,即可完成绑定。

在小程序中,我们可以通过以下方式实现公众号消息推送:

wx.request({
  url: 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + access_token,
  method: 'POST',
  data: {
    touser: 'OPENID',
    template_id: 'TEMPLATE_ID',
    page: 'index',
    form_id: 'FORMID',
    data: {
      keyword1: {
        value: '恭喜你购买成功!',
        color: '#173177'
      },
      keyword2: {
        value: '巧克力',
        color: '#173177'
      },
      keyword3: {
        value: '39.8元',
        color: '#173177'
      },
      keyword4: {
        value: '2014年9月22日',
        color: '#173177'
      }
    },
    emphasis_keyword: 'keyword1.DATA'
  },
  success: function (res) {
    console.log("success");
  },
  fail: function (err) {
    console.log("fail");
  }
})

三、小程序消息推送规则

1. 消息类型

小程序可以向用户推送两种类型的消息:模板消息和客服消息。模板消息可以在用户不在线时推送,客服消息需要用户在线才能推送。

2. 推送限制

小程序消息推送需要满足一定的限制条件,包括:

  • 一个用户每天最多收到4条模板消息和24条客服消息。
  • 一个模板消息和客服消息都需要在7天内被推送,否则会过期而无法被推送。
  • 不同类型的消息会影响用户的接受率。对于一些被认为比较骚扰的消息(例如推销信息),用户自然的策略是主动忽略或者屏蔽消息。

3. 模板消息

模板消息可以使用预设的模板、关键字和内容进行快速制作。小程序右侧菜单中有一个“模板消息”选项,可用于管理模板消息。

以下是一个模板消息制作实例:

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "form_id": "FORMID",
  "data": {
    "keyword1": {
      "value": "小程序模板消息",
      "color": "#173177"
    },
    "keyword2": {
      "value": "2019年9月5日 14:00",
      "color": "#173177"
    },
    "keyword3": {
      "value": "官方文档",
      "color": "#173177"
    }
  },
  "emphasis_keyword": "keyword1.DATA"
}

四、小程序通知栏消息推送

如果用户设置允许,小程序可以向用户推送通知栏消息,以便用户随时了解小程序的最新内容。

以下是一个向用户推送通知栏消息的实例:

wx.showModal({
  title: '提示',
  content: '确定要推送通知栏消息吗?',
  success: function (res) {
    if (res.confirm) {
      wx.requestSubscribeMessage({
        tmplIds: ['TEMPLATE_ID_1', 'TEMPLATE_ID_2', 'TEMPLATE_ID_3'],
        success(res) {
          console.log(res)
        },
        fail(err) {
          console.log(err)
        }
      })
    } else if (res.cancel) {
      console.log('用户点击取消')
    }
  }
})

五、小程序能推送消息吗

小程序可以向用户发送消息,但需要满足一定的规则和限制条件。在实际操作中,我们需要合理的运用小程序消息推送功能,以避免在用户中造成过多的骚扰,同时也可以提高用户对小程序的认知度和使用度。

代码示例:

在页面中添加以下button按钮:




在js文件中添加以下代码:

Page({
  data: {
    appId: 'wx80deeb600aa00000',
    appSecret: 'fea4e73519d828926f93c9276d000000',
    openId: '',
    formId: '',
    templateId: 'yRKwoFdQj0tJQwLXIUa8GNnqcc-Vd7b4tjIOdp_WLxk',
    lang: 'zh_CN',
    templateData: {
      keyword1: {
        value: '小程序模板消息',
        color: '#173177'
      },
      keyword2: {
        value: '2019年9月5日 14:00',
        color: '#173177'
      },
      keyword3: {
        value: '官方文档',
        color: '#173177'
      }
    },
    subscribeData: {
      thing1: {
        value: '小程序订阅消息',
      },
      time2: {
        value: '2019年9月8日 14:00',
      }
    }
  },
  onLoad: function (options) {
    // 获取用户授权
    wx.login({
      success: res => {
        wx.request({
          url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + this.data.appId + '&secret=' + this.data.appSecret + '&js_code=' + res.code + '&grant_type=authorization_code',
          success: res => {
            this.setData({
              openId: res.data.openid
            })
          }
        })
      }
    })
  },
  sendTemplateMessage: function () {
    // 发送模板消息
    wx.request({
      url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + this.data.appId + '&secret=' + this.data.appSecret,
      success: res => {
        wx.request({
          url: 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + res.data.access_token,
          method: 'POST',
          data: {
            touser: this.data.openId,
            template_id: this.data.templateId,
            form_id: this.data.formId,
            data: this.data.templateData,
            emphasis_keyword: 'keyword1.DATA'
          },
          success: res => {
            console.log(res)
          }
        })
      }
    })
  },
  sendSubscribeMessage: function () {
    // 发送订阅消息
    wx.request({
      url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + this.data.appId + '&secret=' + this.data.appSecret,
      success: res => {
        wx.request({
          url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + res.data.access_token,
          method: 'POST',
          data: {
            touser: this.data.openId,
            template_id: '6udZURdLRwpdpUySYIgFNzRrV2tRzZQ9fGTjhNlV1V0',
            lang: this.data.lang,
            data: this.data.subscribeData
          },
          success: res => {
            console.log(res)
          }
        })
      }
    })
  },
  sendNotificationMessage: function () {
    // 发送通知栏消息
    wx.showModal({
      title: '提示',
      content: '确定要发送通知栏消息吗?',
      success: res => {
        if (res.confirm) {
          wx.requestSubscribeMessage({
            tmplIds: ['8cE1mjvOB4StFUljvB1Njz-1mcubdip0eiC9k2ivQwg'],
            success: res => {
              console.log(res)
            }
          })
        } else if (res.cancel) {
          console.log('用户点击取消')
        }
      }
    })
  }
})