Maison > développement back-end > tutoriel php > Classe push de messages PHP Umeng

Classe push de messages PHP Umeng

不言
Libérer: 2023-03-28 19:06:01
original
5382 Les gens l'ont consulté

Cet article présente principalement la catégorie push de messages PHP Umeng, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

<?php
/**
 * 友盟消息 安卓 IOS 推送类
 * 
 */

class AlliesClass
{
    protected $host; //发送地址
    protected $app_key; //appkey
    protected $appMasterSecret; //app secret
    protected $description; //app secret

    //
    public function __construct($options = null)
    {
        if (is_array($options)){

            $this->host = &#39;https://msgapi.umeng.com/api/send&#39;;
            $this->app_key = $options[&#39;app_key&#39;];
            $this->appMasterSecret = $options[&#39;appMasterSecret&#39;];

            $this->description = "友盟接口推送";

        }else{
            return false;
        }

    }


    /**
     * @param $info
     * @param $device_token
     * @return mixed|string
     * 用户单播 和 列播
     */
    public function Android_Device_Push($info, $device_token)
    {
        $data[&#39;appkey&#39;] = $this->app_key;
        $data[&#39;timestamp&#39;] = time(); //时间戳

        if(is_array($device_token)){

            //批量用户列播
            $data[&#39;type&#39;] = &#39;listcast&#39;;
            $data[&#39;device_tokens&#39;] =  implode(&#39;,&#39;,$device_token); //数组转字符串

        }else{

            //一个用户单播
            $data[&#39;type&#39;] = &#39;unicast&#39;;
            $data[&#39;device_tokens&#39;] =  $device_token;
        }

        //payload内容
        $data[&#39;payload&#39;][&#39;display_type&#39;] = &#39;notification&#39;; //通知消息

        //payload body内容
        $data[&#39;payload&#39;][&#39;body&#39;][&#39;after_open&#39;] = "go_custom"; //后续操作打开app

        $data[&#39;payload&#39;][&#39;body&#39;][&#39;ticker&#39;] = $info[&#39;ticker&#39;];
        $data[&#39;payload&#39;][&#39;body&#39;][&#39;title&#39;] = $info[&#39;title&#39;];
        $data[&#39;payload&#39;][&#39;body&#39;][&#39;text&#39;] = $info[&#39;title&#39;]; //广播通知不能为空补填

        //这里可以写附加字段
        $data[&#39;payload&#39;][&#39;extra&#39;][&#39;type&#39;] = $info[&#39;type&#39;];  //附加字段类型


        $data[&#39;production_mode&#39;] = $info[&#39;production_mode&#39;];

        $data[&#39;description&#39;] = $this->description;

        return $this->send($data, $this->host, $this->appMasterSecret);
    }

    /**
     * @param $info
     * @return mixed|string
     * 广播
     */
    public function Android_Broadcast($info)
    {
        $data[&#39;appkey&#39;] = $this->app_key;
        $data[&#39;timestamp&#39;] = time(); //时间戳

        //广播消息
        $data[&#39;type&#39;] = &#39;broadcast&#39;;

        //payload内容
        $data[&#39;payload&#39;][&#39;display_type&#39;] = &#39;notification&#39;; //通知消息

        //payload body内容
        $data[&#39;payload&#39;][&#39;body&#39;][&#39;after_open&#39;] = "go_custom"; //后续操作打开app

        $data[&#39;payload&#39;][&#39;body&#39;][&#39;ticker&#39;] = $info[&#39;ticker&#39;];
        $data[&#39;payload&#39;][&#39;body&#39;][&#39;title&#39;] = $info[&#39;title&#39;];
        $data[&#39;payload&#39;][&#39;body&#39;][&#39;text&#39;] = $info[&#39;title&#39;]; //广播通知不能为空补填

        $data[&#39;payload&#39;][&#39;extra&#39;][&#39;type&#39;] = $info[&#39;type&#39;];  //附加字段类型1 跳转消息详情
        $data[&#39;payload&#39;][&#39;extra&#39;][&#39;prod_id&#39;] = $info[&#39;prod_id&#39;];  //附加字段消息详情id
        $data[&#39;payload&#39;][&#39;extra&#39;][&#39;text&#39;] = $info[&#39;text&#39;]; //

        $data[&#39;production_mode&#39;] = $info[&#39;production_mode&#39;];

        $data[&#39;description&#39;] = $this->description;

        return $this->send($data, $this->host, $this->appMasterSecret);
    }

    /**
     * @param $info
     * @param $device_token
     * @return mixed|string
     * 单播 和 列播
     */
    public function Ios_Device_Push($info, $device_token)
    {
        $data = array();

        $data[&#39;appkey&#39;] = $this->app_key;
        $data[&#39;timestamp&#39;] = time(); //时间戳

        if(is_array($device_token)){

            //批量用户列播
            $data[&#39;type&#39;] = &#39;listcast&#39;;
            $data[&#39;device_tokens&#39;] =  implode(&#39;,&#39;,$device_token); //数组转字符串

        }else{

            //一个用户单播
            $data[&#39;type&#39;] = &#39;unicast&#39;;
            $data[&#39;device_tokens&#39;] =  $device_token;
        }

        //payload内容
        $data[&#39;payload&#39;][&#39;aps&#39;][&#39;alert&#39;] = $info[&#39;text&#39;]; //消息主体
        $data[&#39;payload&#39;][&#39;aps&#39;][&#39;sound&#39;] = &#39;default&#39;; //声音

        $data[&#39;payload&#39;][&#39;type&#39;] = $info[&#39;type&#39;]; //消息类型 0打开消息详情

        $data[&#39;payload&#39;][&#39;prod_id&#39;] = $info[&#39;prod_id&#39;]; //消息id
        $data[&#39;payload&#39;][&#39;title&#39;] = $info[&#39;title&#39;];
        $data[&#39;payload&#39;][&#39;text&#39;] = $info[&#39;text&#39;]; //

        $data[&#39;production_mode&#39;] = $info[&#39;production_mode&#39;];

        $data[&#39;description&#39;] = $this->description;

        return $this->send($data, $this->host, $this->appMasterSecret);
    }


    public function Ios_Broadcast($info)
    {
        $data = array();

        $data[&#39;appkey&#39;] = $this->app_key;
        $data[&#39;timestamp&#39;] = time(); //时间戳

        //广播消息
        $data[&#39;type&#39;] = &#39;broadcast&#39;;

        //payload内容
        $data[&#39;payload&#39;][&#39;aps&#39;][&#39;alert&#39;] = $info[&#39;title&#39;]; //消息主体
        $data[&#39;payload&#39;][&#39;aps&#39;][&#39;sound&#39;] = &#39;chime&#39;; //声音
        $data[&#39;payload&#39;][&#39;aps&#39;][&#39;badge&#39;] = 1; //显示角标

        $data[&#39;payload&#39;][&#39;type&#39;] = $info[&#39;type&#39;]; //消息类型 0打开消息详情

        $data[&#39;payload&#39;][&#39;prod_id&#39;] = $info[&#39;prod_id&#39;]; //消息id
        $data[&#39;payload&#39;][&#39;title&#39;] = $info[&#39;title&#39;];
        $data[&#39;payload&#39;][&#39;text&#39;] = $info[&#39;ticker&#39;]; //

        $data[&#39;production_mode&#39;] = $info[&#39;production_mode&#39;];

        $data[&#39;description&#39;] = $this->description;

        return $this->send($data, $this->host, $this->appMasterSecret);
    }

    /**
     * @param $data
     * @param $url_s
     * @param $appMasterSecret
     * @return mixed|string
     * curl 请求
     */
    private function send($data, $url_s, $appMasterSecret)
    {
        $postBody = json_encode($data);

        //加密
        $sign = md5("POST" . $url_s . $postBody . $appMasterSecret);
        $url = $url_s . "?sign=" . $sign;

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postBody );
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $curlErrNo = curl_errno($ch);
        $curlErr = curl_error($ch);
        curl_close($ch);

        // print_r($result);
        // exit;

        if ($httpCode == "0") {
            // Time out
            return ("Curl error number:" . $curlErrNo . " , Curl error details:" . $curlErr . "\r\n");
        } else if ($httpCode != "200") {
            return ("Http code:" . $httpCode .  " details:" . $result . "\r\n");
        } else {
            return $result;
        }
    }
}

?>
Copier après la connexion
 <?php
    //使用类
    $options[&#39;app_key&#39;] = &#39;&#39;; //友盟key;
    $options[&#39;appMasterSecret&#39;] = &#39;&#39;; //友盟MasterSecret

    $this->umeng = new AlliesClass($options);

    $info[&#39;ticker&#39;] = &#39;&#39;;
    $info[&#39;title&#39;] =&#39;&#39;;
    $info[&#39;title&#39;] =&#39;&#39;; //广播通知不能为空补填
    $info[&#39;type&#39;] = 4;  //附加字段类型1 跳转消息详情
    $info[&#39;text&#39;] = &#39;提醒&#39;; //
    $info[&#39;production_mode&#39;] = &#39;false&#39;;

    $value=$this->umeng->Android_Device_Push($info, $token);  //单播传入数据和用户token

    $value=$this->umeng->Android_Broadcast($info);  //广播直接传入数据
?>
Copier après la connexion

Ce qui précède est le suivant. article C'est tout pour cet article, merci à tous d'avoir lu. Veuillez prêter attention au site Web PHP chinois pour plus d'informations !

Recommandations associées :

Calcul de l'hypothèque PHP

Méthode de filtrage PHP pour trouver des nombres premiers

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal