`

小程序通知消息推送

阅读更多

最近公司在搞微信小程序:抽奖小程序,打卡小程序;自己作为项目的负责人随时跟踪进度,小程序的前端参与写了一点点2,3个简单的页面,后台系统的搭建和开发我来搞等,感觉微信小程序的前端页面等很想vue,标签和绑定等;小程序的前端编写下一篇文章再写,这篇文章主要介绍小程序的通知消息推送的实现;

大家可以去看小程序的官方文档:

https://developers.weixin.qq.com/miniprogram/dev/api/notice.html#%E6%A8%A1%E7%89%88%E6%B6%88%E6%81%AF%E7%AE%A1%E7%90%86

我们先看效果:


 

这是在微信小程序里申请的相关配置


 申请结果:

 



 这是申请需要填写的参数



 

这是文档提供的消息模板 示例

 好了,那我们看一下如何实现:

第一步:配置参数,如APPID,接收用户openID,appsec,模板IDtemplateid(微信里申请),url(点击消息调到小程序那个页面),form_id(前端给每次都不一样,微信防止滥发消息默认用户点击才发)等;

第二步:获取getAccessToken;

第三步:请求微信消息发送接口;

很简单吧,加公众号后台申请模板ID我用了3小时,调通;代码没怎么整理,明天上班去整理一下

 

下面是代码;

<?php

class IndexAction {

    private $appid;

    private $appsec;

    private $templateid;

    private $url;

    function __construct(){

        

        $this->appid = 'wxcxxxxxxxxxxxxxxxxxxxxxxxxx;

        $this->appsec = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

        

        $this->templateid = 'xxxxxxxxxxxxxxxxxxxxxx'; //微信公众号后台申请

        $this->url = '/pages/award-detail/award-detail?id=31'; //跳转地址

    }

 

    public function index()

    {

        $access_token = S("token");  //微信说7200有效,加个缓存避免频繁请求

        if(!$token){

            $access_token = $this->getAccessToken();

            S("token",$access_token,7200);

        }

      

        $data=[

            'touser'=> 'ocsi84gKLeAQj_jgNfjXxQRJnUHYKL', //陈海波 openid

            'template_id'=> $this->templateid,

            'page'=> $this->url,

            'form_id'=> 'e235b9dfbd7b156ee16b5347e912e3f6j9k7',  //前端每次点击都不一样

            'topcolor'=>"#FF0000",

            'data'=>array(

                'keyword1'=>array('value'=>'键盘',"color"=>"#173177"),

                'keyword2'=>array('value'=>'上海xx抽检之键盘抽检开奖通知',"color"=>"#173177")

            )

        ];

        //http请求微信发送接口

        $result = $this->curl_post_send_information($access_token,json_encode($data));

        

        dump($result);die;

    }

    

    

    // 获取 access_token

    private function getAccessToken(){

        

        $appid = $this->appid;

        $appsec = $this->appsec;

        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsec}";

        //$raw = curl_get($url);

        $raw = $this->curl_get_https($url);

        if(strlen($raw)>0){

            $data = json_decode($raw,true);

            if(json_last_error()==JSON_ERROR_NONE){

                if(key_exists('access_token',$data)){

                    return $data['access_token'];

                }else{

                    return false;

                }

            }else{

                return false;

            }

        }else{

            return false;

        }

    }

 

    //curl  get会话

    private function curl_get_https($url){

        $curl = curl_init(); // 启动一个CURL会话

        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_HEADER, 0);

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查

        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在

        $tmpInfo = curl_exec($curl);     //返回api的json对象

        //关闭URL请求

        curl_close($curl);

        return $tmpInfo;    //返回json对象

    }

    

    private function curl_post_send_information( $token,$vars,$second=120,$aHeader=array())  

    {  

        $ch = curl_init();  

        //超时时间  

        curl_setopt($ch,CURLOPT_TIMEOUT,$second);  

        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);  

        //这里设置代理,如果有的话  

        curl_setopt($ch,CURLOPT_URL,'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$token);  

        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);  

        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);

        if( count($aHeader) >= 1 ){  

            curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);  

        }

        curl_setopt($ch,CURLOPT_POST, 1);  

        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);  

        $data = curl_exec($ch);  

        if($data){  

            curl_close($ch);  

            return $data;  

        }  

        else {  

            $error = curl_errno($ch);  

            curl_close($ch);  

            return $error;  

        }  

    }  

}

有一个比较啃爹的问题就是,只能发一个消息,多个用户需要在外面加个foreach,比较蛋疼,之前做过APP的极光推送就比较好(单发,群组发,全体通知发),大家可以去微信公众号API里看看,还是有很多有用的接口和文档的什么获取系统信息用户信息等

 

 

 

  • 大小: 52 KB
  • 大小: 46.4 KB
  • 大小: 17.8 KB
  • 大小: 91 KB
  • 大小: 40.1 KB
分享到:
评论

相关推荐

    微信小程序模板消息还能群发?无限制推送?

    模版消息推送是微信小程序采用的通知形式,用户本人在小程序页面有交互行为后,可触发下发通知,通过微信聊天列表中的服务通知可快捷进入查看消息。此外,点击查看详情还能跳转到下发消息的小程序的指定页面。但是为...

    springboot实现微信模板消息推送

    springboot实现微信模板消息推送,包含微信端代码。简单封装,方便二次开发!

    推送通知附件

    iOS推送通知那篇博客附件,大家共同学习学习

    PHP实现小程序批量通知推送

    本文实例为大家分享了PHP实现小程序批量通知推送的具体代码,供大家参考,具体内容如下 基本效果如下: 具体实现如下: 1.配置模板 2.从小程序获取formId,传到后台存到表里 下发条件说明 1).支付 当用户在小...

    微信小程序开发实现消息推送

    下面就介绍一下如何推送消息。 一、准备工作 首先,在微信公众平台开通消息推送功能,并添加消息模板。可以从模板库选择模板也可以创建一个模板,模板添加之后,模板ID我们接下来要用的。 发送模板消息需要用到...

    微信公众号每日消息推送天气给女朋友制作教程

    给女朋友做的微信公众号消息每日自动推送天气及纪念日通知教程,该教程为github每日自动线上运行版本。本人亲测妹子很喜欢~女孩子都喜欢这种用心做的东西! 1.最新版本 成品 +源码 +消息模板 (需要自己申请 天行 ...

    微信小程序模板消息限制实现无限制主动推送的示例代码

    主要介绍了微信小程序模板消息限制实现无限制主动推送的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    安卓消息推送通知栏相关-状态栏通知小图标notification通知.rar

    状态栏通知小图标,notification通知.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    基于laravel实现模板消息发送(微信小程序版)

    基于laravel实现模板消息发送(微信小程序版),示例代码已给出,有什么问题可以联系作者,保证帮你调试成功,以前看前人的代码看半天还不如自己写一个。

    安卓消息推送通知栏相关-android通知入门小例子.zip

    android通知入门小例子.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    小程序源码 消息推送完美demo.rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方...如有侵权,请举报或通知本人删除。

    后台推送小程序

    使用notification推送消息到通知栏显示。

    微信小程序模板消息推送的两种实现方式

    最近在做微信小程序,为了让用户能更加方便的获取到小程序内部的通知,便想着用模板消息来解决此类问题。首先介绍一下两种方法 第一种是传统的按照微信开发文档来实现模板消息的获取,首先要明确的是你要有一个第三...

    微软消息推送

    微软消息推送,小小的demo,windows phone 平台,小demo

    小程序源码 消息推送最新demo +服务器.rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方...如有侵权,请举报或通知本人删除。

    模板消息助手v1.0(向粉丝推送通知消息)源码

    模板消息助手v1.0(向粉丝推送通知消息) 用于服务号向粉丝推送通知消息,支持跳转小程序。 功能说明: 1、简单实用是本模块的特点,只需要简单配置,就可以发送任意模板消息,支持跳转小程序。 2、要求认证服务号。

    在小程序中推送模板消息的实现方法

    最后发现有个很大的问题是:小程序没法直接给用户推送消息(当时还不知道模板消息),服务号才能。然后就用邮箱实现了通知功能,但是邮箱的局限实在是太大了(各大免费邮箱每天的发件数都很小,自己搭建的邮件服务器...

    .NET CORE3.1实现微信小程序发送订阅消息

    一、appsettings.json定义小程序配置信息 "WX": {  "AppId": "wx88822730803edd44",  "AppSecret": "75b269042e8b5026e6ed14aa24ba9353",  "Templates": {  "Audit": {  "TemplateId": "aBaIjTsPBluYtj2...

Global site tag (gtag.js) - Google Analytics