這篇文章給大家分享的是有關(guān)Yii1.1框架模擬PHP極光推送消息通知的案例的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元蕭縣做網(wǎng)站,已為上家服務(wù),為蕭縣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108一、下載極光推送PHP SDK,解壓后放在/protected/components/目錄下,如下圖所示:
二、完善修改下官方的demo例子,我這里復(fù)制一份demo,改為NotifyPush.php,如下代碼:
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é)果的交集 // 即是說一般情況下,下面三個(gè)方法和沒有列出的 addTagAnd 一共四個(gè),只適用一個(gè)便可滿足大多數(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: 表示推送序號(hào),純粹用來作為 API 調(diào)用標(biāo)識(shí), // API 返回時(shí)被原樣返回,以方便 API 調(diào)用方匹配請(qǐng)求與返回 // 這里設(shè)置為 100 僅作為示例 // 'sendno' => 100, // time_to_live: 表示離線消息保留時(shí)長(秒), // 推送當(dāng)前用戶不在線時(shí),為該用戶保留多長時(shí)間的離線消息,以便其上線時(shí)再次推送。 // 默認(rèn) 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)境;如果不指定則默認(rèn)為推送生產(chǎn)環(huán)境 'apns_production' => $production_mode, // big_push_duration: 表示定速推送時(shí)長(分鐘),又名緩慢推送,把原本盡可能快的推送速度,降低下來, // 給定的 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é)果的交集 // 即是說一般情況下,下面三個(gè)方法和沒有列出的 addTagAnd 一共四個(gè),只適用一個(gè)便可滿足大多數(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: 表示推送序號(hào),純粹用來作為 API 調(diào)用標(biāo)識(shí), // API 返回時(shí)被原樣返回,以方便 API 調(diào)用方匹配請(qǐng)求與返回 // 這里設(shè)置為 100 僅作為示例 // 'sendno' => 100, // time_to_live: 表示離線消息保留時(shí)長(秒), // 推送當(dāng)前用戶不在線時(shí),為該用戶保留多長時(shí)間的離線消息,以便其上線時(shí)再次推送。 // 默認(rèn) 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)境;如果不指定則默認(rèn)為推送生產(chǎn)環(huán)境 'apns_production' => $production_mode, // big_push_duration: 表示定速推送時(shí)長(分鐘),又名緩慢推送,把原本盡可能快的推送速度,降低下來, // 給定的 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); } }
感謝各位的閱讀!關(guān)于Yii1.1框架模擬PHP極光推送消息通知的案例就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!