本篇文章給大家分享的是有關(guān)使用Yii1.1框架怎么實(shí)現(xiàn)PHP極光推送消息通知功能,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

一、下載極光推送PHP SDK,解壓后放在/protected/components/目錄下,如下圖所示:

二、完善修改下官方的demo例子,我這里復(fù)制一份demo,改為NotifyPush.php,如下代碼:
<?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)該直接用于實(shí)際生產(chǎn)環(huán)境中 !!
try {
$response = $client->push()
->setPlatform(array('ios', 'android'))
// 一般情況下,關(guān)于 audience 的設(shè)置只需要調(diào)用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 這四個(gè)方法中的某一個(gè)即可,這里僅作為示例,當(dāng)然全部調(diào)用也可以,多項(xiàng) audience 調(diào)用表示其結(jié)果的交集
// 即是說(shuō)一般情況下,下面三個(gè)方法和沒(méi)有列出的 addTagAnd 一共四個(gè),只適用一個(gè)便可滿足大多數(shù)的場(chǎng)景需求
->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: 表示推送序號(hào),純粹用來(lái)作為 API 調(diào)用標(biāo)識(shí),
// API 返回時(shí)被原樣返回,以方便 API 調(diào)用方匹配請(qǐng)求與返回
// 這里設(shè)置為 100 僅作為示例
// 'sendno' => 100,
// time_to_live: 表示離線消息保留時(shí)長(zhǎng)(秒),
// 推送當(dāng)前用戶不在線時(shí),為該用戶保留多長(zhǎng)時(shí)間的離線消息,以便其上線時(shí)再次推送。
// 默認(rèn) 86400 (1 天),最長(zhǎng) 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 表示要推送開(kāi)發(fā)環(huán)境;如果不指定則默認(rèn)為推送生產(chǎn)環(huán)境
'apns_production' => $production_mode,
// big_push_duration: 表示定速推送時(shí)長(zhǎng)(分鐘),又名緩慢推送,把原本盡可能快的推送速度,降低下來(lái),
// 給定的 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)該直接用于實(shí)際生產(chǎn)環(huán)境中 !!
try {
$response = $client->push()
->setPlatform(array('ios', 'android'))
->setAudience('all')
// 一般情況下,關(guān)于 audience 的設(shè)置只需要調(diào)用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 這四個(gè)方法中的某一個(gè)即可,這里僅作為示例,當(dāng)然全部調(diào)用也可以,多項(xiàng) audience 調(diào)用表示其結(jié)果的交集
// 即是說(shuō)一般情況下,下面三個(gè)方法和沒(méi)有列出的 addTagAnd 一共四個(gè),只適用一個(gè)便可滿足大多數(shù)的場(chǎng)景需求
->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: 表示推送序號(hào),純粹用來(lái)作為 API 調(diào)用標(biāo)識(shí),
// API 返回時(shí)被原樣返回,以方便 API 調(diào)用方匹配請(qǐng)求與返回
// 這里設(shè)置為 100 僅作為示例
// 'sendno' => 100,
// time_to_live: 表示離線消息保留時(shí)長(zhǎng)(秒),
// 推送當(dāng)前用戶不在線時(shí),為該用戶保留多長(zhǎng)時(shí)間的離線消息,以便其上線時(shí)再次推送。
// 默認(rèn) 86400 (1 天),最長(zhǎng) 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 表示要推送開(kāi)發(fā)環(huán)境;如果不指定則默認(rèn)為推送生產(chǎn)環(huán)境
'apns_production' => $production_mode,
// big_push_duration: 表示定速推送時(shí)長(zhǎng)(分鐘),又名緩慢推送,把原本盡可能快的推送速度,降低下來(lái),
// 給定的 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;
}
}
}三、調(diào)用NotifyPush.php里的方法,實(shí)現(xiàn)推送,如下代碼:
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);
}
}1、執(zhí)行速度快。2、具有很好的開(kāi)放性和可擴(kuò)展性。3、PHP支持多種主流與非主流的數(shù)據(jù)庫(kù)。4、面向?qū)ο缶幊蹋篜HP提供了類(lèi)和對(duì)象。5、版本更新速度快。6、具有豐富的功能。7、可伸縮性。8、功能全面,包括圖形處理、編碼與解碼、壓縮文件處理、xml解析等。
以上就是使用Yii1.1框架怎么實(shí)現(xiàn)PHP極光推送消息通知功能,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:使用Yii1.1框架怎么實(shí)現(xiàn)PHP極光推送消息通知功能-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://www.yijiale78.com/article40/djgieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、動(dòng)態(tài)網(wǎng)站、用戶體驗(yàn)、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容