jPush 极光推送的理解

  1. 云栖社区>
  2. 博客>
  3. 正文

jPush 极光推送的理解

桃子红了呐 2017-03-26 16:30:00 浏览977

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



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3945095.html,如需转载请自行联系原作者