`

小程序通知消息推送

阅读更多

最近公司在搞微信小程序:抽奖小程序,打卡小程序;自己作为项目的负责人随时跟踪进度,小程序的前端参与写了一点点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
分享到:
评论

相关推荐

    C# 小程序订阅消息推送 代码

    小程序订阅消息封装代码

    微信小程序模板消息推送,含前后端程序(PHP后端)

    微信小程序中模板消息推送功能实现代码,含前后端程序(PHP后端)

    微信小程序消息推送

    在微信小程序中实现消息推送是一项重要的功能,它可以帮助开发者与用户保持有效的沟通,例如通知用户支付成功、订单提交成功等关键事件。 1. **微信小程序消息推送原理** 微信小程序的消息推送依赖于微信服务器和...

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

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

    推送通知附件

    推送通知在iOS应用开发中扮演着至关重要的角色,它能够实时地向用户传达应用程序的新消息、更新或提醒,即便用户并未直接与应用交互。本文将深入探讨iOS推送通知的实现机制、工作流程以及如何在你的应用程序中有效地...

    微信小程序推送模板消息功能

    6. **消息推送流程**:通常流程包括:用户触发事件 -&gt; 小程序调用后端接口 -&gt; 后端验证用户权限并获取模板ID -&gt; 后端构建模板消息内容 -&gt; 发送模板消息到微信服务器 -&gt; 微信服务器将消息推送给用户。 7. **错误处理...

    springboot实现微信模板消息推送

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

    消息推送demo

    7. **推送库和工具**:为了简化推送消息的处理,开发者可以使用各种开源库和工具,如React Native的react-native-push-notification,或者专门为iOS和Android设计的第三方推送服务,如OneSignal、Pusher等。...

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

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

    ECOLOGY9消息推送至企业微信、钉钉配置说明文档

    - 新建流程通知消息,选择模块为流程,再选择除新到达流程(待处理流程)、转发流程、抄送流程、退回流程、意见征询流程、传阅流程外的所有流程消息,只打开启动和对外推送开关,并在EM后台关联此应用。如果是针对...

    小程序消息群发推送 2.1.2

    在IT行业中,小程序消息群发推送是一项重要的功能,它允许开发者向用户批量发送通知或消息,从而增强用户体验,提高用户互动。在这个2.1.2版本的更新中,可能涉及了性能优化、新特性的添加或者对已有问题的修复。...

    java实现企业微信消息推送

    在企业微信API开发中,Java作为一种广泛使用的编程语言,提供了丰富的库和工具来实现与企业微信接口的交互,实现消息推送功能。以下是一份详细的Java实现企业微信消息推送的知识点详解: 1. **企业微信API概述** ...

    Andorid消息推送Demo

    - **权限问题**:确保应用拥有必要的权限,如`INTERNET`和`WAKE_LOCK`,以接收和处理推送消息。 - **异常处理**:可能增加了对FCM服务不可用或Token获取失败时的错误处理。 - **消息格式**:可能调整了发送给FCM...

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

    微信小程序模板消息是开发者与用户保持有效沟通的重要工具,尤其在用户与小...总之,通过合理的设计和利用微信小程序的特性,开发者可以有效地实现无限制主动推送模板消息,但需谨慎操作,尊重用户隐私,避免过度推送。

    android短链接消息推送

    同时,需要创建一个Firebase实例ID服务,以便在设备上生成唯一的令牌,用以识别每个接收推送消息的设备。 3. **注册和接收消息**:当应用首次启动时,会调用FCM的实例ID服务,生成设备令牌。这个令牌将被发送到...

    VX小程序推送E语言源码

    推送消息是微信小程序中常用的一种功能,通常用于向用户发送通知或者更新信息。在E语言中,实现推送消息可能需要调用微信提供的API接口。这包括注册接收消息的事件监听器,处理接收到的消息,以及构造并发送消息到...

    安卓消息推送通知栏相关-消息推送完美demo.rar

    这个"安卓消息推送通知栏相关-消息推送完美demo.rar"压缩包包含了一些关于如何实现在安卓应用中实现消息推送并显示在通知栏的示例代码和资源。 首先,我们要了解安卓系统中的`Notification`类,它是构建通知的核心...

    消息推送平台 推送下发邮件短信【微信服务号】【微信小程序】企业微信钉钉等消息类型

    消息推送平台是现代数字化运营中的关键组成部分,它能够帮助企业、开发者高效地向用户发送各种类型的通知,如邮件、短信、微信服务号消息、微信小程序消息、企业微信消息以及钉钉消息。这种平台的存在大大增强了与...

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

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

    微信推送api借鉴程序

    这个"微信推送api借鉴程序"显然是一个示例或模板,帮助开发者理解如何有效地利用微信API来推送消息,包括文本、图片、文件等多种格式。下面我们将详细探讨相关的知识点。 首先,我们需要了解的是微信API的基本概念...

Global site tag (gtag.js) - Google Analytics