Yii1.1框架实现PHP极光推送消息通知
一、下载极光推送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);
- }
- }
Yii1.1框架实现PHP极光推送消息通知的更多相关文章
- 极光推送消息——Alias别称方式(Andirod)
1.pom文件引入相关jar包 <!--极光推送消息start--> <dependency> <groupId>net.sf.json-lib</group ...
- IOS 极光推送自定义通知遇到的一些坑
主要方法: //自定义推送 - (void)networkDidReceiveMessage:(NSNotification *)notification { NSDictionary * userI ...
- ios之极光推送消息收到以后对消息的处理总结
当我们的APP收到推送消息后,通常需要根据推送内容点击消息进入到指定的页面 这里讲一下收到推送消息后的处理,分为三种情况 :1.APP处于前台运行情况下 2.APP处于后台挂起情况下 3. ...
- iOS监听模式系列之推送消息通知
推送通知 和本地通知不同,推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: ...
- ios -- 极光推送《2》--极光推送消息推送成功,但是手机收不到的解决方法
1.确认证书是否与app的Bundle ID是否一致 2. 确认你的推送证书是否已经过期 3.确认你的APP_KEY是否和极光APP_KEY是否一致 4.正确调用bindChannel,并成功返回ap ...
- 极光推送消息——RegistrationID方式
1.工具类 package com.test.util; import cn.jiguang.common.resp.APIConnectionException; import cn.jiguang ...
- GoEasy实现websocket 推送消息通知到客户端
最近在实现一个推送功能,用户扫描二维码签到,后台及时将签到成功信息推送到浏览器端.排除了前端ajax轮询的方式,决定采用websocket及时推送. 于是发现了第三方websocket推送库GoEas ...
- JPush 极光推送 消息推送 实例
简介 官网:https://www.jpush.cn/ 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度 ...
- 极光推送_总结_01_Java实现极光推送
一.代码实现 1.配置类—Env.java package com.ray.jpush.config; /**@desc : 极光推送接入配置 * * @author: shirayner * @da ...
随机推荐
- SQL SERVER 查询与整理索引碎片
重建索引 use DATABASE_NAME; ) ) DECLARE @fillfactor INT DECLARE TableCursor CURSOR FOR SELECT OBJECT_SCH ...
- sql developer以字段来删除大量数据
今天碰到一个问题,就是删除数据库数据,要删除了有1000一千条左右的数据,总共数据大概有30万条左右,但是如何删除呢, 我首先想到的是找数据的共性,因为这些数据日期都是3月份的,30万条数据时间段不相 ...
- Zabbix WMI监控
检查Windows OS是否激活,5表示处于通知模式,1表示已激活 wmi.get[root\cimv2,select LicenseStatus FROM SoftwareLicensingProd ...
- 【PAT】B1011 A+B 和 C
注意数据的范围,使用long long就行了 #include<stdio.h> int main(){ int N;scanf("%d",&N); for(i ...
- springcloud(十五):Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway
Spring 官方最终还是按捺不住推出了自己的网关组件:Spring Cloud Gateway ,相比之前我们使用的 Zuul(1.x) 它有哪些优势呢?Zuul(1.x) 基于 Servlet,使 ...
- 选择数据库管理系统(DBMS)时主要考虑的因素
选择数据库管理系统时应从以下几个方面予以考虑: (1) 构造数据库的难易程度. 需要分析数据库管理系统有没有范式的要求,即是否必须按照系统所规定的数据模型分析现实世界,建立相应的模型:数据库管理语句是 ...
- 转://Oracle 11gR2 硬件导致重新添加节点
一.环境描述: 这是一套五年前部署的双节点单柜11g RAC,当时操作系统盘是一块164g的单盘,没有做RAID. OS: RedHat EnterPrise 5.5 x8 ...
- ActiveMQ发布订阅模式 转发 https://www.cnblogs.com/madyina/p/4127144.html
ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...
- remix的使用
remix首先,这个东西其实是有一个线上版本的,只要登录上网址:https://remix.ethereum.org就可以直接使用了,但是我更多用的是本地配置的remix-ideremix-ide的文 ...
- docker 2 docker介绍
docker是基于go语言实现的云开源项目 docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生 ...