極光推送是給客戶端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。未設置則不是定速推送。