1. 程式人生 > >個推,推送資料到安卓客戶端(php版)

個推,推送資料到安卓客戶端(php版)

由於專案開發需要,需要服務端推送資料到安卓客戶端,最終選擇了第三方的個推資料推送。準備工作個推官網有詳細介紹,此處不做詳解。基本推算原理:在個推註冊繫結客戶端後,每一個客戶端會有一個唯一的客戶端id,通過傳送推送內容到客戶端完成訊息推送。以下介紹個推兩個推送型別(單個推送):

<1>點選通知開啟應用

<?php
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');

define('APPKEY','XXX');
define('APPID','XXX');
define('MASTERSECRET','XXX');
define('HOST','https://api.getui.com/apiex.htm');

//單推介面案例
function pushMessageToSingle($cid,$msg){
    $igt = new IGeTui(HOST,APPKEY,MASTERSECRET);

    //點選通知開啟應用模版:
    $template = IGtNotificationTemplateDemo($msg);

    //定義"SingleMessage"
    $message = new IGtSingleMessage();

    $message->set_isOffline(true);//是否離線
    $message->set_offlineExpireTime(3600*12*1000);//離線時間
    $message->set_data($template);//設定推送訊息型別
    //$message->set_PushNetWorkType(0);//設定是否根據WIFI推送訊息,2為4G/3G/2G,1為wifi推送,0為不限制推送
    //接收方
    $target = new IGtTarget();
    $target->set_appId(APPID);
    $target->set_clientId($cid);
    //$target->set_alias(Alias);

    try {
        $rep = $igt->pushMessageToSingle($message, $target);
        var_dump($rep);
        echo ("<br><br>");
    }catch(RequestException $e){
        $requstId =e.getRequestId();
        //失敗時重發
        $rep = $igt->pushMessageToSingle($message, $target,$requstId);
        var_dump($rep);
        echo ("<br><br>");
    }
}

function IGtNotificationTemplateDemo($msg){
    $template =  new IGtNotificationTemplate();
    $template->set_appId(APPID);//應用appid
    $template->set_appkey(APPKEY);//應用appkey
    $template->set_transmissionType(1);//透傳訊息型別
    $template->set_transmissionContent("");//透傳內容
    $template->set_title("您有新的訊息,請注意查收!");//通知欄標題
    $template->set_text($msg);//通知欄內容
    $template->set_logo("logo.png");//通知欄logo
    $template->set_isRing(true);//是否響鈴
    $template->set_isVibrate(true);//是否震動
    $template->set_isClearable(true);//通知欄是否可清除
    //$template->set_duration(BEGINTIME,ENDTIME); //設定ANDROID客戶端在此時間區間內展示訊息
    return $template;
}
?>

<2>點選通知開啟網頁

<?php
require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');

define('APPKEY','XXX');
define('APPID','XXX');
define('MASTERSECRET','XXX');
define('HOST','https://api.getui.com/apiex.htm');
define('CID','XXX');

pushMessageToSingle();

//單推介面案例
function pushMessageToSingle(){
    $igt = new IGeTui(HOST,APPKEY,MASTERSECRET);

    //點選通知開啟網頁模版:
    $template = IGtLinkTemplateDemo();
    //定義"SingleMessage"
    $message = new IGtSingleMessage();

    $message->set_isOffline(true);//是否離線
    $message->set_offlineExpireTime(3600*12*1000);//離線時間
    $message->set_data($template);//設定推送訊息型別
    //$message->set_PushNetWorkType(0);//設定是否根據WIFI推送訊息,2為4G/3G/2G,1為wifi推送,0為不限制推送
    //接收方
    $target = new IGtTarget();
    $target->set_appId(APPID);
    $target->set_clientId(CID);
    //$target->set_alias(Alias);

    try {
        $rep = $igt->pushMessageToSingle($message, $target);
        var_dump($rep);
        echo ("<br><br>");
    }catch(RequestException $e){
        $requstId =e.getRequestId();
        //失敗時重發
        $rep = $igt->pushMessageToSingle($message, $target,$requstId);
        var_dump($rep);
        echo ("<br><br>");
    }
}

function IGtLinkTemplateDemo(){
    $template =  new IGtLinkTemplate();
    $template ->set_appId(APPID);//應用appid
    $template ->set_appkey(APPKEY);//應用appkey
    $template ->set_title("您有新的訊息,請注意查收");//通知欄標題
    $template ->set_text("老闆在嗎");//通知欄內容
    $template ->set_logo("");//通知欄logo
    $template ->set_isRing(true);//是否響鈴
    $template ->set_isVibrate(true);//是否震動
    $template ->set_isClearable(true);//通知欄是否可清除
    $template ->set_url("www.baidu.com");//開啟連線地址
    //$template->set_duration(BEGINTIME,ENDTIME); //設定ANDROID客戶端在此時間區間內展示訊息
    return $template;
}
?>