Notification基本操作
Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。我们在使用手机的过程中经常可以收到各种类型的app发送通知。通知主要有以下几个作用
- 显示接收到短消息、及时消息等信息(如QQ、微信、新浪、短信)
- 显示客户端的推送消息,如广告、优惠、版本更新、推荐新闻等
- 显示正在进行的事物,例如:后台运行的程序,如音乐播放进度、下载进度等
下面我介绍下如何在app内发送通知的。大致可以分为以下步骤
- 获取NotificationManager对象
- 通过构建者模式创建出Notification对象(Notification.Builder)
- 发送通知
我们可以通过Notificaiton.Builder设置各种属性,这里我先创建一个最简易的通知,我们只要设置了小图标、标题、文本内容这3个属性便可以成功创建出Notification(这3个属性缺一不可)。当然我们也可以设置通知显示的效果,如响铃、震动等我们也只需在此进行设置即可,这里就不一一介绍。发送一条简易通知具体代码如下
//获取NotificationManager实例
NotificationManager notifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//通过构建者模式创建Notification,最简易通知只要设置以下3个属性就可以了
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.wechat_small)
.setContentTitle("这是最简易通知--我是标题")
.setContentText("只有小图标、标题、内容--我是内容");
//发送通知,第一个参数为Id开发者可以通过Id对通知进行更新和取消
notifyManager.notify(2, builder.build());
8.0系统适配
我们在使用手机时,有时候下滑通知栏会发现有大量通知,不胜其烦。好在8.0系统后,Google引入了通知渠道这个概念,也就是说在8.0系统上用户可以自主选择关闭或者开启某类通知。如果你的项目的 targetSdkVersion 是在26或更高以上的版本,通过上面方式发送通知在8.0系统的手机上是收不到的,并且会弹出一条吐司提示channel为空,所以我们要进行适配。
对于通知的适配,在8.0系统就是多了个通知渠道(NotificationChannel),也就是说我们只要在发送通知时,创建通知渠道即可,下面就介绍下如何创建。
首先,创建通知渠道前提就是确保我们的项目targetSdkVersion指定在26或以上的版本。
然后我们在代码中进行通知渠道的创建,其代码的位置只要保证在发送通知前调用即可,你可以在application进行创建,这里我是直接在activity中进行创建的。并且创建通知渠道的代码只在第一次执行的时候才会创建,以后每次执行创建代码系统会检测到该通知渠道已经存在了,因此不会重复创建,也并不会影响任何效率。其代码如下