?php
require dirname(__FILE__) . '/jpush-api-php-client/autoload.php';
use JPush\Client as JPush;
class NotifyPush {
static function pushAlias($alias,$ticket='消息提醒',$alert){
$appKey=Yii::app()->params['push']['AppKey'];
$appMasterSecret=Yii::app()->params['push']['AppMasterSecret'];
$production_mode=Yii::app()->params['push']['production_mode'];
$client = new JPush($appKey, $appMasterSecret);
// 完整的推送示例
// 這只是使用樣例,不應(yīng)該直接用于實際生產(chǎn)環(huán)境中 !!
try {
$response = $client->push()
->setPlatform(array('ios', 'android'))
// 一般情況下,關(guān)于 audience 的設(shè)置只需要調(diào)用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 這四個方法中的某一個即可,這里僅作為示例,當(dāng)然全部調(diào)用也可以,多項 audience 調(diào)用表示其結(jié)果的交集
// 即是說一般情況下,下面三個方法和沒有列出的 addTagAnd 一共四個,只適用一個便可滿足大多數(shù)的場景需求
->addAlias($alias)
->setNotificationAlert($alert)
->iosNotification($ticket, array(
'sound' => 'sound.caf',
// 'badge' => '+1',
// 'content-available' => true,
// 'mutable-content' => true,
'category' => 'jiguang',
'extras' => array(
'key' => 'value',
'jiguang'
),
))
->androidNotification($ticket, array(
'title' => $alert,
// 'build_id' => 2,
'extras' => array(
'key' => 'value',
'jiguang'
),
))
->message($alert, array(
'title' => $alert,
// 'content_type' => 'text',
'extras' => array(
'key' => 'value',
'jiguang'
),
))
->options(array(
// sendno: 表示推送序號,純粹用來作為 API 調(diào)用標(biāo)識,
// API 返回時被原樣返回,以方便 API 調(diào)用方匹配請求與返回
// 這里設(shè)置為 100 僅作為示例
// 'sendno' => 100,
// time_to_live: 表示離線消息保留時長(秒),
// 推送當(dāng)前用戶不在線時,為該用戶保留多長時間的離線消息,以便其上線時再次推送。
// 默認 86400 (1 天),最長 10 天。設(shè)置為 0 表示不保留離線消息,只有推送當(dāng)前在線的用戶可以收到
// 這里設(shè)置為 1 僅作為示例
// 'time_to_live' => 1,
// apns_production: 表示APNs是否生產(chǎn)環(huán)境,
// True 表示推送生產(chǎn)環(huán)境,F(xiàn)alse 表示要推送開發(fā)環(huán)境;如果不指定則默認為推送生產(chǎn)環(huán)境
'apns_production' => $production_mode,
// big_push_duration: 表示定速推送時長(分鐘),又名緩慢推送,把原本盡可能快的推送速度,降低下來,
// 給定的 n 分鐘內(nèi),均勻地向這次推送的目標(biāo)用戶推送。最大值為1400.未設(shè)置則不是定速推送
// 這里設(shè)置為 1 僅作為示例
// 'big_push_duration' => 1
))
->send();
print_r($response);
} catch (\JPush\Exceptions\APIConnectionException $e) {
// try something here
print $e;
} catch (\JPush\Exceptions\APIRequestException $e) {
// try something here
print $e;
}
}
static function pushAll($ticket='消息提醒',$alert){
$appKey=Yii::app()->params['push']['AppKey'];
$appMasterSecret=Yii::app()->params['push']['AppMasterSecret'];
$production_mode=Yii::app()->params['push']['production_mode'];
$client = new JPush($appKey, $appMasterSecret);
// 完整的推送示例
// 這只是使用樣例,不應(yīng)該直接用于實際生產(chǎn)環(huán)境中 !!
try {
$response = $client->push()
->setPlatform(array('ios', 'android'))
->setAudience('all')
// 一般情況下,關(guān)于 audience 的設(shè)置只需要調(diào)用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 這四個方法中的某一個即可,這里僅作為示例,當(dāng)然全部調(diào)用也可以,多項 audience 調(diào)用表示其結(jié)果的交集
// 即是說一般情況下,下面三個方法和沒有列出的 addTagAnd 一共四個,只適用一個便可滿足大多數(shù)的場景需求
->setNotificationAlert($alert)
->iosNotification($ticket, array(
'sound' => 'sound.caf',
// 'badge' => '+1',
// 'content-available' => true,
// 'mutable-content' => true,
'category' => 'jiguang',
'extras' => array(
'key' => 'value',
'jiguang'
),
))
->androidNotification($ticket, array(
'title' => $alert,
// 'build_id' => 2,
'extras' => array(
'key' => 'value',
'jiguang'
),
))
->message($alert, array(
'title' => $alert,
// 'content_type' => 'text',
'extras' => array(
'key' => 'value',
'jiguang'
),
))
->options(array(
// sendno: 表示推送序號,純粹用來作為 API 調(diào)用標(biāo)識,
// API 返回時被原樣返回,以方便 API 調(diào)用方匹配請求與返回
// 這里設(shè)置為 100 僅作為示例
// 'sendno' => 100,
// time_to_live: 表示離線消息保留時長(秒),
// 推送當(dāng)前用戶不在線時,為該用戶保留多長時間的離線消息,以便其上線時再次推送。
// 默認 86400 (1 天),最長 10 天。設(shè)置為 0 表示不保留離線消息,只有推送當(dāng)前在線的用戶可以收到
// 這里設(shè)置為 1 僅作為示例
// 'time_to_live' => 1,
// apns_production: 表示APNs是否生產(chǎn)環(huán)境,
// True 表示推送生產(chǎn)環(huán)境,F(xiàn)alse 表示要推送開發(fā)環(huán)境;如果不指定則默認為推送生產(chǎn)環(huán)境
'apns_production' => $production_mode,
// big_push_duration: 表示定速推送時長(分鐘),又名緩慢推送,把原本盡可能快的推送速度,降低下來,
// 給定的 n 分鐘內(nèi),均勻地向這次推送的目標(biāo)用戶推送。最大值為1400.未設(shè)置則不是定速推送
// 這里設(shè)置為 1 僅作為示例
// 'big_push_duration' => 1
))
->send();
print_r($response);
} catch (\JPush\Exceptions\APIConnectionException $e) {
// try something here
print $e;
} catch (\JPush\Exceptions\APIRequestException $e) {
// try something here
print $e;
}
}
}
class CronNotifyPushCommand extends CConsoleCommand{
public $keys=array();
public function init(){
parent::init();
}
public function actionIndex(){
echo 'start CronNotifyPushCommand '.chr(10);
if(!Yii::app()->params['push']['push_status']){
echo 'push status disabled';die();
}
$rkey='message_notify_list';
$waitTotals=Fredis::model()->redis->lsize($rkey);
echo 'wait totals:'.$waitTotals.chr(10);
$waitResult=true;
$i=0;
while($waitResult) {$i++;
echo $i.'/'.$waitTotals.' wait to do'.chr(10);
$waitResult=Fredis::model()->redis->rpop($rkey);
if(!$waitResult) {
continue;
}
$db_data=unserialize($waitResult);var_dump($db_data);
$message_content=$db_data['message_content'];
$uid=$db_data['uid'];
$alias=$uid;
if($uid==0){
NotifyPush::pushAll($message_content, $message_content);
}else {
NotifyPush::pushAlias($alias, $message_content, $message_content);
}
}
echo 'end'.chr(10);
}
}
以上所述是小編給大家介紹的Yii1.1框架實現(xiàn)PHP極光推送消息通知,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!