极光推送是给客户端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。未设置则不是定速推送。