课题 - jPush 极光推送的理解 下载本文

内容发布更新时间 : 2024/4/30 17:44:49星期一 下面是文章的全部内容请认真阅读。

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 = '
'; $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 ' Code : ' . $e->Code . $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'=>'.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'=>'.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'=>'.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。未设置则不是定速推送。