微信小程序开发订阅消息

小程序开发


浏览:1022 次

在微信小程序的开发中,我们可能经常会遇到在用户执行操作后,需要在未来某个时间向用户发出反馈通知的情况,例如在一些餐厅点餐后发送的取餐提醒、一些打卡app中的打卡提醒等,所以只有一种方法可以实现这个功能&订阅消息。

订阅消息有两个主要步骤:订阅和发布。

1、 订阅

要发送消息,小程序必须首先知道要发送给谁,然后知道何时发送。因此,订阅是一项必要的操作,就像公众号一样。如果你想让公众号在每次发表文章时都能收到推送,你必须关注公众号。

然而,与公众号不同的是,小程序只能实现一次性消息订阅,而不是永久消息订阅,这意味着订阅后消息一旦发送,订阅将失效。如果您希望以后再次收到消息通知,则必须再次订阅。

订阅消息代码大致如下:

wx.requestSubscribeMessage(请求订阅消息)({

TmplIds:[“”],//要订阅的消息模板ID的集合

成功(res){}//接口成功调用回调函数

})

在哪里可以获取tmplIds数组中的消息模板ID?

首先,我们需要自己添加配置消息模板,可以在[微信公众平台()-功能-订阅消息]中进行配置。配置消息模板后,我们可以获得其模板ID。

有关订阅消息的更多详细信息,可以直接在官方微信文档-小程序()中查看。

2、 发布

订阅消息后,小程序还需要根据订阅时提供的相关信息(用户ID等)发布消息。

上面提到的订阅操作是一种用户操作,体现在前端即小程序端,而发布操作则体现在后端即服务器端。此时,我们可以直接使用云开发来实现它。

1.定义云功能

我们可以定义一个发布消息的云函数。代码大致如下:

const cloud=require('wx server sdk')//必须首先安装wx server sdk

云.init({

env:云。DYNAMIC_ CURRENT_ ENV//云环境ID

})

出口。main=异步(事件、上下文)=>{

尝试{

const结果=等待cloud.openapi.subscribeMessage.send({

Touser:“OPENID”,//接收方(用户)的OPENID

页面:“pages/index/index”,//单击模板卡后面的小程序跳转到页面

lang:'zh_ CN',//语言类型

数据:{},//模板内容

templateId:'TEMPLATE_ID',//要发布的订阅模板ID

MiniprogramState:“developer”//跳转到小程序类型。默认为官方版本

})

返回结果

}捕获(错误){

返回错误

}

}

具体参数配置可以直接在微信官方文档-小程序()中查看。

有几点可能需要注意:

① 上面的代码是cloud函数中的一个云调用,它需要wx服务器sdk

您可以通过npm安装进行保存wx-server-sdk@latest将其安装在当前云函数的文件目录中。例如:

其中安装了wx服务器sdk

有关云呼叫的更多详细信息,请参见官方微信文档小程序()

② 在config中,在发送API的json权限中配置subscribeMessage

{

“权限”:{

“openapi”:[

“templateMessage.send”

]

}

}

当然,配置。json文件也必须放在当前云函数的文件目录中。

③ 关于subscribeMessage发送API参数数据的特定配置

这是我最近开发的一个小程序使用的消息模板

以我开发的目标管理助手小程序为例,我在消息模板中使用了四个字段,即上图中的thing1、thing2、date3和thing4,因此对应的参数数据如下:

云.openapi.subscribeMessage.send({

数据:{

事情1:{

价值观:“坚持工作一个月不迟到”

},

事情2:{

值:“您的朋友已确认证人”

},

日期3:{

值:“2020-01-17 12:30:00”

},

事情4:{

值:“请尽快处理”

}

},

//更多参数

});

当然,上面的字段值文本只是一个示例,可以根据需要自由填写。

2.调用云功能

定义云函数后,必须调用云函数,就像必须执行函数才能生效一样。

有两种方法可以调用云函数:手动和自动。

① 手动呼叫

顾名思义,手动调用要求用户手动触发云函数的执行。如果发送上述消息的云函数是name