JPush Wiki
极光推送包含有通知与自定义消息两种类型的推送。本文描述他们的区别,以及建议的应用场景。
功能角度
通知
或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。这是 Android / iOS 的基本功能。
一条通知,简单的填写纯文本的通知内容即可。
通知主要用于提示用户的目的。应用加上通知功能,有利于提高应用的活跃度。
两者的区别
功能角度
通知
或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。这是 Android / iOS 的基本功能。
一条通知,简单的填写纯文本的通知内容即可。
通知主要用于提示用户的目的。应用加上通知功能,有利于提高应用的活跃度。
自定义消息
是极光推送自己的概念。
自定义消息不是通知,所以不会被SDK展示到通知栏上。其内容完全由开发者自己定义。
自定义消息主要用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。
![]() |
本质上:自定义消息是原始的消息,JPush SDK 不做处理。而通知,则 JPush SDK 会做通知展示处理,其目的是为了减轻开发人员的工作量。 所以,如果通知功能不太符合您的需求,你都可以使用自定义消息来实现(客户端展现App自己来做)。 |
开发者使用角度
通知
简单场景下的通知,用户可以不写一行代码,而完全由 SDK 来负责默认的效果展示,以及默认用户点击时打开应用的主界面。
JPush Android SDK 提供了 API 让开发者来定制通知栏的效果,请参考:自定义通知栏样式教程;也提供了 接收推送消息Receiver 让你来定制在收到通知时与用户点击通知时的不同行为。
自定义消息
SDK 不会把自定义消息展示到通知栏。
所以调试时,需要到日志里才可以看到服务器端推送的自定义消息。
自定义消息一定要由开发者写 接收推送消息Receiver 来处理收到的消息。
![]() |
注意:当自定义消息内容msg_content为空时,SDK不会对消息进行广播,使得app无法接收到推送的消息,因此建议在使用自定义消息推送时添加内容 |
使用通知
请参考以下示例代码。
- 工具
- 通知 vs. 自定义消息
- 转至元数据结尾
- 转至元数据起始
- 两者的区别
- 功能角度
- 通知
- 自定义消息
- 开发者使用角度
- 通知
- 自定义消息
- 使用通知
- 使用自定义消息
- 参考
- 极光推送包含有通知与自定义消息两种类型的推送。本文描述他们的区别,以及建议的应用场景。
- V2 API 只能向 Android 推送自定义消息,V3 API 可以向Android和iOS(需要是iOS1.7.3及以上的版本)推送自定义消息。
- 两者的区别
- 功能角度
- 通知
- 或者说 Push Notification,即指在手机的通知栏(状态栏)上会显示的一条通知信息。这是 Android / iOS 的基本功能。
- 一条通知,简单的填写纯文本的通知内容即可。
- 通知主要用于提示用户的目的。应用加上通知功能,有利于提高应用的活跃度。
- 自定义消息
- 是极光推送自己的概念。
- 自定义消息不是通知,所以不会被SDK展示到通知栏上。其内容完全由开发者自己定义。
- 自定义消息主要用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。
- 本质上:自定义消息是原始的消息,JPush SDK 不做处理。而通知,则 JPush SDK 会做通知展示处理,其目的是为了减轻开发人员的工作量。
- 所以,如果通知功能不太符合您的需求,你都可以使用自定义消息来实现(客户端展现App自己来做)。
- 开发者使用角度
- 通知
- 简单场景下的通知,用户可以不写一行代码,而完全由 SDK 来负责默认的效果展示,以及默认用户点击时打开应用的主界面。
- JPush Android SDK 提供了 API 让开发者来定制通知栏的效果,请参考:自定义通知栏样式教程;也提供了 接收推送消息Receiver 让你来定制在收到通知时与用户点击通知时的不同行为。
- 自定义消息
- SDK 不会把自定义消息展示到通知栏。
- 所以调试时,需要到日志里才可以看到服务器端推送的自定义消息。
- 自定义消息一定要由开发者写 接收推送消息Receiver 来处理收到的消息。
- 注意:当自定义消息内容msg_content为空时,SDK不会对消息进行广播,使得app无法接收到推送的消息,因此建议在使用自定义消息推送时添加内容
- 使用通知
- 请参考以下示例代码。
- public class MyReceiver extends BroadcastReceiver {
- private static final String TAG = "MyReceiver";
- private NotificationManager nm;
- @Override
- public void onReceive(Context context, Intent intent) {
- if (null == nm) {
- nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- }
- Bundle bundle = intent.getExtras();
- Logger.d(TAG, "onReceive - " + intent.getAction() + ", extras: " + AndroidUtil.printBundle(bundle));
- if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
- Logger.d(TAG, "JPush用户注册成功");
- } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
- Logger.d(TAG, "接受到推送下来的自定义消息");
- } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
- Logger.d(TAG, "接受到推送下来的通知");
- receivingNotification(context,bundle);
- } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
- Logger.d(TAG, "用户点击打开了通知");
- openNotification(context,bundle);
- } else {
- Logger.d(TAG, "Unhandled intent - " + intent.getAction());
- }
- }
- private void receivingNotification(Context context, Bundle bundle){
- String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
- Logger.d(TAG, " title : " + title);
- String message = bundle.getString(JPushInterface.EXTRA_ALERT);
- Logger.d(TAG, "message : " + message);
- String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
- Logger.d(TAG, "extras : " + extras);
- }
- private void openNotification(Context context, Bundle bundle){
- String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
- String myValue = "";
- try {
- JSONObject extrasJson = new JSONObject(extras);
- myValue = extrasJson.optString("myKey");
- } catch (Exception e) {
- Logger.w(TAG, "Unexpected: extras is not a valid json", e);
- return;
- }
- if (TYPE_THIS.equals(myValue)) {
- Intent mIntent = new Intent(context, ThisActivity.class);
- mIntent.putExtras(bundle);
- mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(mIntent);
- } else if (TYPE_ANOTHER.equals(myValue)){
- Intent mIntent = new Intent(context, AnotherActivity.class);
- mIntent.putExtras(bundle);
- mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(mIntent);
- }
- }
- }
JPush Wiki的更多相关文章
- atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消 ...
- 烂泥:wiki系统confluence5.6.6安装、中文、破解及迁移
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它 ...
- Wiki安装(PHP +Sqlite+Cache)
前期准备 PHP http://windows.php.net/download WinCache Extension for PHP URL:http://sourceforge.net/pro ...
- 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言
在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...
- Confluence Wiki -- 页面限制
Confluence Wiki 中 [页面设置] 应该如何理解? 当一个用户有这个权限后,这个用户可以对一个页面做限制,可以限制这个页面不能被其他用户浏览或编辑: 反之,如果没有这个权限,那么这个用户 ...
- 极光推送JPush的快速集成
首先到极光推送的官网上创建一个应用,填写对应的应用名和包名. 创建好之后下载Demo 提取Sdk里面的图片和xml等资源文件放自己项目的相应位置,然后要注意的是.so文件的放置位置: 在main目录下 ...
- 极光推送Jpush(v3)服务端PHP版本的api脚本类
原文地址:http://www.dodobook.net/php/780 关于极光推送的上一篇文章已经说明了,此处就不多说了.使用v3版本的原因是v2使用到2014年年底就停止了.点击查看上一篇的地址 ...
- working with fitnesse wiki pages
fitnesse提供一个简单易用的wiki创建一个web页面用于测试.测试页面有一个button,允许所有的测试在这个页面运行,因此任何人在任何时间都可以去这个页面点击这个按钮,查看测试是否通过.fi ...
随机推荐
- java判断list为空
isEmpty()判断有没有元素而size()返回有几个元素 list.isEmpty()和list.size()==0 没有区别 list!=null跟!list.isEmpty()有什么区别? 这 ...
- 拉面馆中的移动互联网——无线KPI探讨
拉面馆中的移动互联网——无线KPI探讨 伴随着这几年超高速发展,移动互联网早已经度过了小米加步枪的散兵游击状态,随着各大公司持重金杀入,无线从几个人的Team,到快速发展为几十.上百人甚至上千人的大部 ...
- ci为什么必须得写构造函数
构造函数 如果要在你的任意控制器中使用构造函数的话,那么必须在里面加入下面这行代码: parent::__construct(); 这行代码的必要性在于,你此处的构造函数会覆盖掉这个父控制器类中的构造 ...
- CSS3 动画animation
关键帧 什么是关键帧.一如上面对Flash原理的描述一样,我们知道动画其实由许多静态画面组成,第一个这样的静态画面可以表述为一帧.其中关键帧是在动画过程中体现了物理明显变化的那些帧. 比如之前的例子中 ...
- goquery
使用goquery 会用jquery的,goquery基本可以1分钟上手,下面是goquery文档 http://godoc.org/github.com/PuerkitoBio/goquery 1. ...
- css absolute与relative的区别
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JAVA本地方法详解,什么是JAVA本地方法?
一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...
- 转:Java NIO系列教程(七) Socket Channel
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器. ...
- C#集合接口的继承关系图
- dedecms如何自定义专题模板
很多人看到别人的网站也是用dedecms建的,但是他们的专题做得很漂亮,也在想如何自定义dedecms专题模板呢? 其实很简单,只要在dedecms默认专题模板上做一些修改就好了 <!DOCTY ...