如何借助JPush即时向客户端jpush 推送给指定用户消息

投诉建议、广告投放、友情链接,联系QQ:
jPush极光推送 PHP 调用api demo
Loading...
803 次阅读
今天把《云瞭望》APP二期接口弄完了,同时对极光消息推送接口做了些调整,下面为PHP调用API的示例:
* 模拟post进行url请求
* @param string $url
* @param string $param
* @return bool|mixed
function request_post($url = '', $param = '')
if(empty($url) || empty($param))
$curlPost = $
= curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_URL, $postUrl); //抓取指定网页
curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($ch); //运行curl
curl_close($ch);
public function jpush($data)
//(必填)调用地址
$url = ':8800/v2/push';
//(必填)待发送的应用程序(appKey)
$appkeys = 'xxxxxxxxxxxxx';
//(必填)API MasterSecret
$masterSecret = 'xxxxxxxxxxxxxxxxxxxxxxx';
//(必填)接收者类型。1、指定的 IMEI。此时必须指定 appKeys。2、指定的 tag。3、指定的 alias。4、 对指定 appkey 的所有用户推送消息。
$receiver_type = 4;
//(选填)发送范围值,与 receiver_type相对应。 1、IMEI只支持一个 2、tag 支持多个,使用 "," 间隔。 3、alias 支持多个,使用 "," 间隔。 4、不需要填
$receiver_value = '';
//(必填)发送消息的类型,1、通知,2、自定义消息(只支持android)
$msg_type = 1;
//(必填)发送消息的内容。
$msg_content = '';
//(必填)目标用户终端手机的平台类型,如: android, ios 多个请使用逗号分隔。
$platform = 'android,ios';
//(选填)从消息推送时起,保存离线的时长。秒为单位。最多支持10天(864000秒)。
// 0 表示该消息不保存离线。即:用户在线马上发出,当前不在线用户将不会收到此消息。
//此参数不设置则表示默认,默认为保存1天的离线消息(86400秒)。
$time_to_live = 86400;
//生成验证串
$verification_code = md5($data['sendno'] . $receiver_type . $receiver_value . $masterSecret);
//消息内容格式化
= array();
$content['n_builder_id'] = 0; //(可选)1-1000的数值,不填则默认为 0,使用 极光Push SDK 的默认通知样式。只有 Android 支持这个参数
$content['n_title']
= '云瞭望'; //(可选)通知标题。不填则默认使用该应用的名称。只有 Android支持这个参考。
$content['n_content']
= $data['push_title']; //(必填)通知内容。
$content['n_extras']
= ''; //(可选)通知附加参数。客户端可取得全部内容。
//附加参数
$additionalParameters
= array();
$additionalParameters['article_id']
= $data['article_id'];
$additionalParameters['from_where']
= $data['article_fromWhere'];
$additionalParameters['displayTime'] = $data['article_displayTime'];
$content['n_extras'] = $additionalP
$msg_content = json_encode($content);
//组装请求参数
$param = '';
$param .= "&sendno={$data['sendno']}";
$param .= "&app_key={$appkeys}";
$param .= "&receiver_type={$receiver_type}";
$param .= "&receiver_value={$receiver_value}";
$param .= "&verification_code={$verification_code}";
$param .= "&msg_type={$msg_type}";
$param .= "&msg_content={$msg_content}";
$param .= "&platform={$platform}";
//发送请求
$pushResult = $this-&request_post($url, $param);
if($pushResult === false)
$pushResult = json_decode($pushResult, true);
$message = array();
switch(intval($pushResult['errcode']))
$message['msg'] = '消息推送成功';
$message['msg'] = '系统内部错误';
case 1001:
$message['msg'] = '只支持 HTTP Post 方法,不支持 Get 方法';
case 1002:
$message['msg'] = '缺少了必须的参数';
case 1003:
$message['msg'] = '参数值不合法';
case 1004:
$message['msg'] = '验证失败';
case 1005:
$message['msg'] = '消息体太大';
case 1007:
$message['msg'] = 'receiver_value 参数 非法';
case 1008:
$message['msg'] = 'appkey参数非法';
case 1010:
$message['msg'] = 'msg_content 不合法';
case 1011:
$message['msg'] = '没有满足条件的推送目标';
case 1012:
$message['msg'] = 'iOS 不支持推送自定义消息。只有 Android 支持推送自定义消息';
IT技术书籍推荐:
深入PHP:面向对象、模式与实践(第3版)
Mart Zandstra (作者), 陈浩 (译者), 吴孙滨 (译者), 胡丹 (译者), 李静 (译者)
《深入PHP:面向对象、模式与实践(第3版)》是PHP专家经典力作的最新版本。书中主要介绍了如何使用面向对象技术和设计模式编写稳定的、可维护的代码,如何使用Subversion管理多个开发人员,如何使用Phing和PEAR进行构建和安装,以及将构建和测试过程自动化的策略,包括持续集成。《深入PHP:面向对象、模式与实践(第3版)》适合中高级PHP程序员阅读。
相关推荐:1、2、3、4、5、6、7、8、9、10、
随机关键词:
正在加载...
最新微信头条二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
只为成功找方法,不为失败找借口!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(2558)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'极光推送使用实例(二) Android客户端',
blogAbstract:'上一篇简单介绍了极光推送在java服务端的实现,如果感兴趣的可以看一下
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}安卓消息推送解决方案
安卓消息推送解决方案
一、推送工具使用
我们在做安卓开发的时候,通常需要一些消息推送功能,我个人平时用的是极光推送,极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。极光推送客户端支持 Android, iOS 两个平台。
使用的时候我们可以先去官网看,我是在我的新闻客户端中引用了这个sdk,下载解压之后可以按照步骤做相应操作就可以了,个人感觉还是挺实用的。
自己按照源码重新做了一个简单的可接收消息的demo,
下面给出的是PushReceiver的代码:
public class PushReceiver extends BroadcastReceiver {
private static final String TAG = &PushReceiver&;
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Log.d(TAG, &onReceive - & + intent.getAction());
if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent
.getAction())) {
System.out.println(&收到了自定义消息。消息内容是:&
+ bundle.getString(JPushInterface.EXTRA_MESSAGE));
// 自定义消息不会展示在通知栏,完全要开发者写代码去处理
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent
.getAction())) {
System.out.println(&收到了通知&);
// 在这里可以做些统计,或者做些其他工作
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent
.getAction())) {
System.out.println(&用户点击打开了通知&);
// 在这里可以自己写代码去定义用户点击后的行为
String extra = bundle.getString(JPushInterface.EXTRA_EXTRA);
System.out.println(&附加信息:& + extra);
JSONObject jo = new JSONObject(extra);
String url = jo.getString(&url&);
System.out.println(&url:& + url);
// 跳浏览器加载网页
} catch (JSONException e) {
e.printStackTrace();
}当然,这段代码用了一个自定义消息的功能,可以推送json数据,不只是推送标题消息哦!所有需要客户端被动接收信息的功能模块,都可以用推送实现
然后用JSONObject jo = new JSONObject(extra);
String url = jo.getString(&url&);来解析,当然我们还可以用Gson来解析json数据。
二、推送原理简介
-xmpp 是一种基于TCP/IP的协议, 这种协议更适合消息发送。七层协议。
&事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。关于XMPP协议我在上篇博文中已经介绍,大家可以参考下文章:/hanyonglu/archive//2378956.html
- socket 套接字, 发送和接收网络请求。这个我在大三的时候上网络编程的时候学过,但是当时没有用心学额。
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
- 长连接 keep-alive, 服务器基于长连接找到设备,发送消息
-心跳包 , 客户端会定时(30秒一次)向服务器发送一段极短的数据,作为心跳包, 服务器定时收到心跳,证明客户端活着,才会发消息.否则将消息保存起来,等客户端活了之后(重新连接),重新发送.
我的热门文章
即使是一小步也想与你分享&&&&Jpush 极光推送 的很好例子
&Jpush 极光推送 的很好例子
很好的服务器向服务器端推送很好的例子 解决了大部分朋友 在服务器像客户端推送消息的问题
若举报审核通过,可奖励20下载分
被举报人:
weixingyan
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
移动开发下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
Jpush 极光推送 的很好例子
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
Jpush 极光推送 的很好例子
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员}

我要回帖

更多关于 jpush推送 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信