jPush 極光推送的理解

極光推送是給客戶端ios或者android推送消息的工具。

只要在客戶端嵌入sdk,同時配合服務器端來使用就可以了。

客戶端可以給每個用戶註冊一個別名alias,和多個標籤tag。

到時候,就可以給這些別名和標籤發送推送了。

也可以給所有跟這個客戶端有關聯的用戶發送消息。

 

客戶端可以調用相應的接口來設置信息。

服務器端可以調用相應的接口來發送推送。

 

應用需要去極光上註冊一個

$master_secret = 'a36fef7cbd5b47b74c20278c';
$app_key='1d2bd69d09c3756fa20f9c96';

 

這個值是確定這個應用的賬號。

類似於用戶名和密碼。

 

它關聯這個應用。

複製代碼
require_once 'vendor/autoload.php';

use JPush\Model as M;
use JPush\JPushClient;
use JPush\JPushLog;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

use JPush\Exception\APIConnectionException;
use JPush\Exception\APIRequestException;

$br = '<br/>';
$spilt = ' - ';




$master_secret = 'a36fef7cbd5b47b74c20278c';
$app_key='1d2bd69d09c3756fa20f9c96';
JPushLog::setLogHandlers(array(new StreamHandler('jpush.log', Logger::DEBUG)));
$client = new JPushClient($app_key, $master_secret);

//easy push

try {
    $result = $client->push()
        ->setPlatform(M\all)
        //->setAudience(M\all)
        //->setAudience(M\audience(M\tag(array('tag1','tag2'))))
        //->setAudience(M\audience(M\alias(array('123'))))
        ->setAudience(M\audience(M\alias(array('1','123')),M\tag(array('tag1','tag2'))))//取交集,也就是別名爲1,且其tag值爲tag1或tag2的用戶才能收到推送
        ->setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('你好,我是別名!', 'happy', 1, true)))
        ->printJSON()
        ->send();
    echo 'Push Success.' . $br;
    echo 'sendno : ' . $result->sendno . $br;
    echo 'msg_id : ' .$result->msg_id . $br;
    echo 'Response JSON : ' . $result->json . $br;
} catch (APIRequestException $e) {
    echo 'Push Fail.' . $br;
    echo 'Http Code : ' . $e->httpCode . $br;
    echo 'code : ' . $e->code . $br;
    echo 'Error Message : ' . $e->message . $br;
    echo 'Response JSON : ' . $e->json . $br;
    echo 'rateLimitLimit : ' . $e->rateLimitLimit . $br;
    echo 'rateLimitRemaining : ' . $e->rateLimitRemaining . $br;
    echo 'rateLimitReset : ' . $e->rateLimitReset . $br;
} catch (APIConnectionException $e) {
    echo 'Push Fail: ' . $br;
    echo 'Error Message: ' . $e->getMessage() . $br;
    //response timeout means your request has probably be received by JPUsh Server,please check that whether need to be pushed again.
    echo 'IsResponseTimeout: ' . $e->isResponseTimeout . $br;
}
複製代碼

這是調用接口。

setPlatform設置平臺

setPlatform(M\all) //設置所有平臺

setPlatform(M\platform('ios', 'android'))//設置android和ios

 

setAudience設置受衆

setAudience(M\all)設置所有受衆

setAudience(M\audience(M\tag(array('tag1','tag2'))))//設置tag爲tag1或tag2的受衆,羣發

setAudience(M\audience(M\alias(array('123')))) //設置別名alias爲123的受衆,單發

setAudience(M\audience(M\alias(array('1','123')),M\tag(array('tag1','tag2'))))//取交集,也就是別名爲1,且其tag值爲tag1或tag2的用戶才能收到推送

 

setNotification設置通知

setNotification(M\notification('Hi, JPush')) //設置通用通知

setNotification(M\notification('Hi, JPush', M\android('Hi, android'))) //爲安卓單獨設置信息,ios則是顯示第一個內容,也就是除了android之外的都是Hi,JPush

setNotification(M\notification('Hi, JPush', M\ios('Hi, ios','happy',1,true)))//爲ios單獨設置信息

setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('Hi, ios', 'happy', 1, true))) //兩個都設置

 

printJSON打印json值

 

send發送

 

$sendno 開發者指定的 API 調用標識

$msg_id 推送信息的唯一標示

 

如果想把一個推送關聯一個新聞,可以通過參數extras

setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('快下班了', 'happy', 1, true,array('url'=>'www.123.com'))))

 

function: JPush/Model/notification($alert /* args */)

構建notification對象

參數:$alert, ios(),android(),winphone()構建的對象

function: JPush/Model/ios($alert, $sound=null, $badge=null, $contentAvailable=null, $extras=null)

構建ios對象

setNotification(M\notification('Hi, JPush', M\android('Hi, android'), M\ios('快下班了', 'happy', 1, true,array('url'=>'www.123.com'))))

參數就是url,到時候就會通過url來進入新聞中去。

 

function: JPush/Model/android($alert, $title=null, $builder_id=null, $extras=null)

構建android對象

function: JPush/Model/winphone($alert, $title=null, $_open_page=null, $extras=null)

構建winphone對象

 

 setMessage設置消息

設置message,本方法接受4個參數msg_content(string,必填)title(string),content_type(string), extras(Array)

setMessage(M\message('這個是推送消息', '這是標題', '', array('url'=>'www.msg.com'))) //設置內容,標題,以及附加值

 

 這裏的數據,不是客戶端來調用的,是系統調用的。可以不用設置。

 

 tag,tag_and的區別,是前者是並集,後者是交集。

setAudience(M\audience(M\tag(array('tag1')),M\tag_and(array('tag2','tag3')), M\alias(array('123','1'))))//用戶標籤爲tag1的,且用戶別名爲123的,且標籤中必須同時有tag2,tag3的。

 

 

複製代碼
function sendAll($content = '', $extras = array(), $title = '壹指', $sound = 'default', $badge = '+1')
    {
        $response = $this->client->push()->setPlatform(M\all)
            ->setAudience(M\all)
            //->setNotification(M\notification($content))
            ->setNotification(M\notification($content, M\android($content,$title,null,$extras), M\ios($content, $sound, $badge, true,$extras)))
            //->printJSON()
            ->setOptions(M\options(null, 86400, null, true))//第二個參數爲0,表示不接受離線數據。86400表示離線數據保留一天。
            ->send();

        return $response->isOk;
        //isOk sendno msg_id
    }
複製代碼

 

options 推送可選項。

當前包含如下幾個可選項:

sendno int 可選 推送序號 純粹用來作爲 API 調用標識,API 返回時被原樣返回,以方便 API 調用方匹配請求與返回。

time_to_live int 可選 離線消息保留時長 推送當前用戶不在線時,爲該用戶保留多長時間的離線消息,以便其上線時再次推送。默認 86400 (1 天),最長 10 天。設置爲 0 表示不保留離線消息,只有推送當前在線的用戶可以收到。

override_msg_id long 可選 要覆蓋的消息ID 如果當前的推送要覆蓋之前的一條推送,這裏填寫前一條推送的 msg_id 就會產生覆蓋效果,即:1)該 msg_id 離線收到的消息是覆蓋後的內容;2)即使該 msg_id Android 端用戶已經收到,如果通知欄還未清除,則新的消息內容會覆蓋之前這條通知;覆蓋功能起作用的時限是:1 天。 如果在覆蓋指定時限內該 msg_id 不存在,則返回 1003 錯誤,提示不是一次有效的消息覆蓋操作,當前的消息不會被推送。

apns_production boolean 可選 APNs是否生產環境  True 表示推送生產環境,False 表示要推送開發環境; 如果不指定則爲推送生產環境。

(消息) JPush 官方 API LIbrary (SDK) 默認設置爲推送 “開發環境”。

big_push_duration int 可選 定速推送時長(分鐘) 又名緩慢推送,把原本儘可能快的推送速度,降低下來,在給定的 n 分鐘內,均勻地向這次推送的目標用戶推送。最大值爲 1440。未設置則不是定速推送。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章