美文网首页
基于Codeigniter的个推 PUSH 服务

基于Codeigniter的个推 PUSH 服务

作者: Jetsung | 来源:发表于2016-05-06 01:16 被阅读397次

    原创,原载于:https://www.skiy.net/201605064018.html

    其实很简单,只需要在将个推的 SDK 解压到application/libraries/Getui/ 目录下即可。
    然后新建文件application/libraries/Getui.php
    再将Getui/IGt.Push.php引入即可。
    使用方式和sdk下的demo一样。

    新建Getui.php的代码如下方式如下:

    require "Getui/IGt.Push.php";
    
    class Getui {}
    

    我扩展封装好的版本如下:

    <?php
    /**
     *
     * Getui.php
     * @author  : Skiychan <dev@skiy.net>
     * @link    : http://www.zzzzy.com
     * @created : 5/4/16
     * @modified:
     * @version : 0.0.1
     */
    
    require "Getui/IGt.Push.php";
    
    class Getui {
        private $_appid = "";
        private $_appkey = "";
    
        private $_title = "";
        private $_message = "";
    
        public function __construct() {}
    
        /**
         * 设置 app 信息
         * @param $appid
         * @param $appkey
         */
        public function setKey($appid, $appkey) {
            $this->_appid = $appid;
            $this->_appkey = $appkey;
        }
    
        /**
         * 设置模板类型
         * @param $type
         * 1.通知透传模板
         * 2.通知链接模板
         * 3.透传模板
         * 4.通知弹框下载模板
         */
        public function setTemplate($type) {
            switch ($type) {
                case 1:  //通知透传模板
                    return $this->IGtNotificationTemplate();
                    break;
    
                case 2:  //通知链接模板
                    return $this->IGtLinkTemplate();
                    break;
    
                case 3:  //透传模板
                    return $this->IGtTransmissionTemplate();
                    break;
    
                case 4:  //通知弹框下载模板
                    return $this->IGtNotyPopLoadTemplate();
                    break;
    
                default: //通知透传模板
                    return $this->IGtNotificationTemplate();
            }
        }
    
        /**
         * 设置消息内容
         * @param $title
         * @param $message
         */
        public function setInfo($title, $message) {
            $this->_title = $title;
            $this->_message = $message;
        }
    
        /**
         * 个推信息体
         * @param string $template     设置推送消息类型
         * @param int    $pushtype     推送类型 默认1(单个用户),2(多个用户), 3(单个应用下的所有用户)
         * @param bool   $online       是否离线
         * @param int    $expire       离线时间
         * @param int    $worktype     设置是否根据WIFI推送消息
         * @return IGtSingleMessage
         */
        public function setMessage($template, $pushtype=1, $online=false, $expire=3600*12*1000, $worktype=0) {
            switch ($pushtype) {
                case 2:  //支持对多个用户进行推送,建议为50个用户
                    $message = new PushMessageToList();
                    break;
    
                case 3:  //对单个应用下的所有用户进行推送,可根据省份,标签,机型过滤推送
                    $message = new pushMessageToApp();
                    break;
    
                default: //支持对单个用户进行推送
                    $message = new IGtSingleMessage();
            }
    
            $message->set_isOffline($online); //是否离线
            ($online == true) && $message->set_offlineExpireTime($expire);  //离线时间
    
            $message->set_data($template); //设置推送消息类型
            $message->set_PushNetWorkType($worktype); //设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送
    
            return $message;
        }
    
        /**
         * 接收方
         * @param $client_id 设备id
         * @return IGtTarget
         */
        public function setTarget($client_id, $alias="") {
            $target = new IGtTarget();
            $target->set_appId($this->_appid);
            $target->set_clientId($client_id);
    
            empty($alias) || $target->set_alias($alias);
    
            return $target;
        }
    
        /**
         * 通知弹框下载功能模板
         * @return IGtNotyPopLoadTemplate
         */
        public function IGtNotyPopLoadTemplate(){
            $template =  new IGtNotyPopLoadTemplate();
    
            $template ->set_appId($this->_appid);//应用appid
            $template ->set_appkey($this->_appkey);//应用appkey
            //通知栏
            $template ->set_notyTitle($this->_title);//通知栏标题
            $template ->set_notyContent($this->_message);//通知栏内容
            $template ->set_notyIcon("");//通知栏logo
            $template ->set_isBelled(true);//是否响铃
            $template ->set_isVibrationed(true);//是否震动
            $template ->set_isCleared(true);//通知栏是否可清除
            //弹框
            $template ->set_popTitle($this->_title);//弹框标题
            $template ->set_popContent($this->_message);//弹框内容
            $template ->set_popImage("");//弹框图片
            $template ->set_popButton1("下载");//左键
            $template ->set_popButton2("取消");//右键
            //下载
            $template ->set_loadIcon("");//弹框图片
            $template ->set_loadTitle($this->_title);
            $template ->set_loadUrl("http://192.168.1.181/download/ekong_v2.0.7.apk");
    
            $template ->set_isAutoInstall(false);
            $template ->set_isActived(true);
    
            //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
    
            return $template;
        }
    
        /**
         * 通知打开链接功能模板
         * @return IGtLinkTemplate
         */
        public function IGtLinkTemplate(){
            $template =  new IGtLinkTemplate();
            $template->set_appId($this->_appid);//应用appid
            $template->set_appkey($this->_appkey);//应用appkey
            $template->set_title($this->_title);//通知栏标题
            $template->set_text($this->_message);//通知栏内容
            $template ->set_logo("");//通知栏logo
            $template ->set_isRing(true);//是否响铃
            $template ->set_isVibrate(true);//是否震动
            $template ->set_isClearable(true);//通知栏是否可清除
            $template ->set_url("http://www.igetui.com/");//打开连接地址
            //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
            //iOS推送需要设置的pushInfo字段
    //        $apn = new IGtAPNPayload();
    //        $apn->alertMsg = "alertMsg";
    //        $apn->badge = 11;
    //        $apn->actionLocKey = "启动";
    //    //        $apn->category = "ACTIONABLE";
    //    //        $apn->contentAvailable = 1;
    //        $apn->locKey = "通知栏内容";
    //        $apn->title = "通知栏标题";
    //        $apn->titleLocArgs = array("titleLocArgs");
    //        $apn->titleLocKey = "通知栏标题";
    //        $apn->body = "body";
    //        $apn->customMsg = array("payload"=>"payload");
    //        $apn->launchImage = "launchImage";
    //        $apn->locArgs = array("locArgs");
    //
    //        $apn->sound=("test1.wav");;
    //        $template->set_apnInfo($apn);
            return $template;
        }
    
        /**
         * 通知透传功能模板
         * @return IGtNotificationTemplate
         */
        public function IGtNotificationTemplate(){
            $template =  new IGtNotificationTemplate();
            $template->set_appId($this->_appid);//应用appid
            $template->set_appkey($this->_appkey);//应用appkey
            $template->set_transmissionType(1);//透传消息类型
            $template->set_transmissionContent($this->_message);//透传内容
            $template->set_title($this->_title);//通知栏标题
            $template->set_text($this->_message);//通知栏内容
            //$template->set_logo("https://www.ekong366.com/static/img/index_logo.png");//通知栏logo
            $template->set_isRing(true);//是否响铃
            $template->set_isVibrate(true);//是否震动
            $template->set_isClearable(true);//通知栏是否可清除
            //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
            //iOS推送需要设置的pushInfo字段
    //        $apn = new IGtAPNPayload();
    //        $apn->alertMsg = "alertMsg";
    //        $apn->badge = 11;
    //        $apn->actionLocKey = "启动";
    //    //        $apn->category = "ACTIONABLE";
    //    //        $apn->contentAvailable = 1;
    //        $apn->locKey = "通知栏内容";
    //        $apn->title = "通知栏标题";
    //        $apn->titleLocArgs = array("titleLocArgs");
    //        $apn->titleLocKey = "通知栏标题";
    //        $apn->body = "body";
    //        $apn->customMsg = array("payload"=>"payload");
    //        $apn->launchImage = "launchImage";
    //        $apn->locArgs = array("locArgs");
    //
    //        $apn->sound=("test1.wav");;
    //        $template->set_apnInfo($apn);
            return $template;
        }
    
        /**
         * 透传功能模板
         * @return IGtTransmissionTemplate
         * @throws Exception
         */
        public function IGtTransmissionTemplate(){
            $template =  new IGtTransmissionTemplate();
            $template->set_appId($this->_appid);//应用appid
            $template->set_appkey($this->_appkey);//应用appkey
            $template->set_transmissionType(1);//透传消息类型
            $template->set_transmissionContent($this->_message);//透传内容
            //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息
            //APN简单推送
    //        $template = new IGtAPNTemplate();
    //        $apn = new IGtAPNPayload();
    //        $alertmsg=new SimpleAlertMsg();
    //        $alertmsg->alertMsg="";
    //        $apn->alertMsg=$alertmsg;
    ////        $apn->badge=2;
    ////        $apn->sound="";
    //        $apn->add_customMsg("payload","payload");
    //        $apn->contentAvailable=1;
    //        $apn->category="ACTIONABLE";
    //        $template->set_apnInfo($apn);
    //        $message = new IGtSingleMessage();
    
            //APN高级推送
            $apn = new IGtAPNPayload();
            $alertmsg=new DictionaryAlertMsg();
            $alertmsg->body="body";
            $alertmsg->actionLocKey="ActionLockey";
            $alertmsg->locKey="LocKey";
            $alertmsg->locArgs=array("locargs");
            $alertmsg->launchImage="launchimage";
    //        IOS8.2 支持
            $alertmsg->title="Title";
            $alertmsg->titleLocKey="TitleLocKey";
            $alertmsg->titleLocArgs=array("TitleLocArg");
    
            $apn->alertMsg=$alertmsg;
            $apn->badge=7;
            $apn->sound="";
            $apn->add_customMsg("payload","payload");
            $apn->contentAvailable=1;
            $apn->category="ACTIONABLE";
            $template->set_apnInfo($apn);
    
            return $template;
        }
    
    }
    

    相关文章

      网友评论

          本文标题:基于Codeigniter的个推 PUSH 服务

          本文链接:https://www.haomeiwen.com/subject/zxtjrttx.html