最近在看消息推送,从服务端向客户端推送消息。虽然现在有C2DM,AndroidPN,还有第三方的推送平台,但是使用别人的总不如自己来搭建平台。在研究啦,希望有研究过的前辈可以指点下。
消息推送必然要用到Notification。现总结如下:
要实现手机状态栏的通知,必然要使用两个类:NotificationManager和Notification。
NotificationManager:状态栏通知的管理类,负责发送、清楚通知等,它是一个系统Service,必须通过getSystemService()方法来获取。
NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationManager常用方法:
public void cancelAll() 移除所有通知(只是针对当前Context下的Notification)
public void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)
public void notify(String tag ,int id, Notification notification) 将通知加入状态栏,标签为tag,标记为id
public void notify(int id, Notification notification) 将通知加入状态栏,标记为id
Notification:具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。
// 创建一个Notification Notification notification = new Notification();
Notification的一些参数:
DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等
DEFAULT_LIGHTS 使用默认闪光提示
DEFAULT_SOUNDS 使用默认提示声音
DEFAULT_VIBRATE 使用默认手机震动
【说明】:加入手机震动,一定要在manifest.xml中加入权限:
<uses-permission android:name="android.permission.VIBRATE" />
// 设置显示在手机最上边的状态栏的图标
notification.icon = R.drawable.notification;
// 当notification被放到状态栏上的时候,会有一个提示内容
notification.tickerText = "注意了,我被扔到状态栏了";
// 添加声音提示
notification.defaults=Notification.DEFAULT_SOUND;
// audioStreamType的值必须AudioManager中的值,代表着响铃的模式
// audioStreamType 当声音响起时,所用的音频流的类型
notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER;
//定义自己的声音提示
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");//使用sd卡的铃声
//使用系统自带的铃声
notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
//声音循环播放,知道用户响应为止
notification.flags|=notification.FLAG_INSISTENT;
//使用默认的闪光
notification.defaults|=Notification.DEFAULT_LIGHTS;
//使用默认的震动
notification.defaults|=Notification.DEFAULT_VIBRATE;
以上是通知显示在状态栏上的一些属性设置内容。当用户下拉状态栏,并且点击通知后,我们要显示通知的具体内容。
Intent intent = new Intent(this, NotificationDetailActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG _ONE_SHOT); // 下拉状态栏,出现消息的提示内容, notification.setLatestEventInfo(this, "内容提示:", "我就是一个测试文件", pendingIntent);
当点击通知提示之后,跳转到通知具体内容的activity:NotificationDetailActivity。
notification.setLatestEventInfo的参数如下:
第二个参数:下拉状态栏时显示的消息标题
第三个参数:下拉状态栏时显示的消息内容
第四个参数:点击该通知时执行页面跳转
// 把Notification传递给NotificationManager notificationManager.notify(1, notification);
参数设置完成后,NotificationManager将通知加入状态栏。NotificationManager里的notify(id,notification)中的id是用来唯一标识我们当前的这个notification的标识符。通过cancel方法删除通知时,传递的就是这个值。
//删除通知 private void clearNotification(){ // 启动后删除之前我们定义的通知 NotificationManager notificationManager = (NotificationManager) this .getSystemService(NOTIFICATION_SERVICE); notificationManager.cancel(1); }
相关推荐
"安卓Android源码——实现Notification的通知栏常驻.zip"这个资源显然包含了关于如何使通知在通知栏中持续显示的代码示例。这里我们将深入探讨Android中创建和管理Notification的基本概念,以及如何实现通知栏常驻。...
本文将深入解析如何通过Android源码实现一个通知栏常驻的Notification。 首先,我们需要理解Notification的工作原理。在Android系统中,Notification是由`NotificationManager`服务管理的,开发者通过`Notification...
这个压缩包文件"Android源码——下拉通知效果源码_new_23.zip"似乎包含了Android 23版本中实现这一功能的相关源代码。在本文中,我们将深入探讨下拉通知在Android中的工作原理,主要涉及以下几个核心知识点: 1. **...
3. **通知推送**:为了实现通知功能,应用可能使用了Android的Notification API,用户即使不在应用内也能收到新通知。 4. **网络通信**:通知数据可能从服务器获取,这涉及到网络请求的实现,如使用Retrofit、...
在“安卓Andriod源码——实现Notification的通知栏常驻.zip”这个压缩包中,我们主要关注的是如何创建一个能够在用户翻阅其他应用或者关闭屏幕后仍然保留在通知栏的常驻Notification。 首先,我们需要了解...
【标题解析】 "安卓Android源码——BrewClock闹钟.zip" 这个标题指出我们正在探讨的是一个与Android操作系统相关的项目,...这对于希望提升Android开发技能,特别是对闹钟应用开发感兴趣的人来说,是一个宝贵的资源。
这个项目"安卓Android源码——开发源码分享在线音乐播放器完整项目.zip"提供了完整的源码,可以帮助开发者深入理解如何构建这样的应用。让我们详细探讨一下其中涉及的关键知识点。 1. **Android SDK和Android ...
《安卓Android源码——jamendo解析》 在深入探讨安卓Android源码——jamendo之前,首先需要理解Android操作系统的基本架构。Android是基于Linux内核...这对于提升Android开发技能和理解系统内部运作机制具有重要价值。
在Android开发中,事务提醒工具源码是一种常见且实用的应用,它可以帮助用户管理日常事务,设置提醒,并确保用户不会错过任何重要的事情。本压缩包文件包含的源码为我们提供了实现此类功能的一个实例,通过深入研究...
"安卓Android源码——Music.rar"提供的正是一个与音乐播放相关的源代码库,这对于想要深入研究Android音乐播放器开发的工程师来说是一份宝贵的资源。 1. **Android多媒体框架**:Android系统提供了多媒体框架,包括...
3. **通知服务(Notification Service)**:为了在生日当天提醒用户,应用会使用Android的Notification API来创建并显示通知。 4. **时间与日期处理**:处理生日提醒需要对日期和时间进行操作,可能会用到Java的日期...
通过分析这个源码,开发者可以学习到Android应用的完整开发流程,了解如何将健康饮食的理论知识与技术实践相结合,提升自己的Android开发技能。同时,对于营养学感兴趣的人士,也能从中理解如何利用技术传播健康知识...
【安卓Android源码——天气预报】是一个典型的移动应用开发项目,专注于在Android平台上实现天气信息的展示和查询功能。这个项目对于理解Android应用程序...对于想要深入Android开发的人来说,这是一个很好的实践案例。
这个"Android源码——天天动听悬浮歌词源码.zip"压缩包提供了实现这一功能的源代码,对于学习和理解Android应用开发,尤其是歌词同步显示的技术细节具有很高的参考价值。 首先,我们来探讨Android应用开发的基础。...
10. **通知(Notification)**:掌握如何向用户显示系统通知,以及使用通知渠道的创建和管理。 11. **权限管理**:Android 6.0以后,部分敏感权限需要在运行时动态申请,理解并实践这一机制非常重要。 12. **...
【Android 源码——短信小助手源码.zip】是一个包含Android应用开发源代码的压缩文件,主要用于学习和...这对于提升Android开发技能,尤其是对于想要深入了解Android系统工作原理的人来说,是非常有价值的实践案例。
在Android平台上开发音乐播放应用是一项常见的任务,而深入理解音乐播放源码...此外,对于希望深入Android开发的人来说,这是一个极好的实践项目,能够提升对Android服务、通知、文件系统和多媒体API的实战运用能力。
10. **通知与提示**:当游戏结束或达到特定条件时,可以使用Notification API向用户发送通知,或者使用Toast显示短暂提示信息。 11. **测试与调试**:Android Studio内置了强大的测试工具,如JUnit和Espresso,用于...