一、下载极光推送PHP SDK,解压后放在/protected/components/目录下,以下图所示:
二、完美修正下官方的demo例子,我这里复制一份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); // 完全的推送示例 // 这只是运用样例,不应该直接用于现实生产环境中 !! try { $response = $client->push() ->setPlatform(array('ios', 'android')) // 平常情况下,关于 audience 的设置只需要挪用 addAlias、addTag、addTagAnd 或 addRegistrationId // 这四个要领中的某一个即可,这里仅作为示例,固然悉数挪用也能够,多项 audience 挪用示意其效果的交集 // 等于说平常情况下,下面三个要领和没有列出的 addTagAnd 一共四个,只实用一个便可满足大多数的场景需求 ->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 挪用标识, // API 返回时被原样返回,以轻易 API 挪用方婚配要求与返回 // 这里设置为 100 仅作为示例 // 'sendno' => 100, // time_to_live: 示意离线音讯保存时长(秒), // 推送当前用户不在线时,为该用户保存多长时间的离线音讯,以便其上线时再次推送。 // 默许 86400 (1 天),最长 10 天。设置为 0 示意不保存离线音讯,只要推送当前在线的用户能够收到 // 这里设置为 1 仅作为示例 // 'time_to_live' => 1, // apns_production: 示意APNs是不是生产环境, // True 示意推送生产环境,False 示意要推送开辟环境;假如不指定章默许为推送生产环境 'apns_production' => $production_mode, // big_push_duration: 示意定速推送时长(分钟),别名迟缓推送,把底本尽量快的推送速率,下降下来, // 给定的 n 分钟内,匀称地向此次推送的目的用户推送。最大值为1400.未设置则不是定速推送 // 这里设置为 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); // 完全的推送示例 // 这只是运用样例,不应该直接用于现实生产环境中 !! try { $response = $client->push() ->setPlatform(array('ios', 'android')) ->setAudience('all') // 平常情况下,关于 audience 的设置只需要挪用 addAlias、addTag、addTagAnd 或 addRegistrationId // 这四个要领中的某一个即可,这里仅作为示例,固然悉数挪用也能够,多项 audience 挪用示意其效果的交集 // 等于说平常情况下,下面三个要领和没有列出的 addTagAnd 一共四个,只实用一个便可满足大多数的场景需求 ->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 挪用标识, // API 返回时被原样返回,以轻易 API 挪用方婚配要求与返回 // 这里设置为 100 仅作为示例 // 'sendno' => 100, // time_to_live: 示意离线音讯保存时长(秒), // 推送当前用户不在线时,为该用户保存多长时间的离线音讯,以便其上线时再次推送。 // 默许 86400 (1 天),最长 10 天。设置为 0 示意不保存离线音讯,只要推送当前在线的用户能够收到 // 这里设置为 1 仅作为示例 // 'time_to_live' => 1, // apns_production: 示意APNs是不是生产环境, // True 示意推送生产环境,False 示意要推送开辟环境;假如不指定章默许为推送生产环境 'apns_production' => $production_mode, // big_push_duration: 示意定速推送时长(分钟),别名迟缓推送,把底本尽量快的推送速率,下降下来, // 给定的 n 分钟内,匀称地向此次推送的目的用户推送。最大值为1400.未设置则不是定速推送 // 这里设置为 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; } } }
三、挪用NotifyPush.php里的要领,完成推送,以下代码:
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); } }
相干教程:PHP视频教程
以上就是Yii1.1框架模仿PHP极光推送音讯关照的细致内容,更多请关注ki4网别的相干文章!