使用微信小程序新的订阅消息接口,主动推送。
小程序订阅消息,昨天刚上线,今天就体验了一下,遇到不少问题,不过还好都解决了。
首先:你需要在小程序后台,选择一个模板,和公众号差不多,不过这里一定要注意,选择模板和你的类目有关系,只出现你类目相关的,而且,还有就是感觉是微信那边的问题,我刚开始选了一个带彩票开奖字段的模板,后面推送消息总是:blackList!!!推送失败,换一个文字正常的就过了。
选好模板:记下ID就进行下一步:
小程序端如何操作呢,这点和公众号不一样,公众号需要一个FormID来消耗,而订阅消息不是,当用户通过事件触发:
我们主动向用户弹出申请,一会放图,下面是API使用,tmplids是模板消息列表ID,你可以放上多个,用户可以根据自己的选择来勾选,当用户勾选要接收的模板消息类型,会返回动态的字段(和模板消息ID一致),并且这个字段的值是:accept,这就代表你在后台,可以为这个用户,推送accept过的模板消息了。不过只能推送一次,如果用户多次点击,便可以多次推送,微信后台应该是记录了。我们也可以自己记录,不需要保存FormID这样的东西。
接口:wx.requestSubscribeMessage(Object object)
wx.requestSubscribeMessage({
tmplIds: ["XII_0By8D9WabnUjVPB_8S1itsm2d4_xxx"],
success: function (res) {
if (res.XII_0By8D9WabnUjVPB_8S1itsm2d4_xxxxx === 'accept'){
wx.showToast({
title: '订阅OK!',
})
}
console.log(res)
//成功
},
fail(err) {
//失败
console.error(err);
}
})
},
一旦用户点击允许,我们可以后台记录该模板被允许了一次。
多次点击,是累计。
看看后端关键代码:PHP接口:subscribeMessage.send
这里注意就是:每个字段都有格式,一定要按照文档格式来
/**
* 发送订阅消息
* @return [type] [description]
*/
public function sendSubMessage(
$openId = "ofasP0XMXrT-8sZCoXcOTxxxxxxx",$tmpl = "XII_0By8D9WabnUjVPB_8S1itsm2d4_VsRxxxxxx"){
$params['touser'] = $openId;
$params['template_id'] = $tmpl;
$params['page'] = "/pages/index/index";
$params['data'] = [
'date2' => ['value' =>'2019-10-12'],
// 'character_string7' =>['value'=>'121212'],
'thing1'=>['value'=>'开通完成']
];
// return $this->success('200',$params);
return $this->getCurl(self::$subMessageUrl.self::$accessToken,$params);
}
看看发送成功的内容: