android技术专栏Android进阶之旅

Android Oreo 中通知的更新

2017-09-11  本文已影响97人  HangoX

资料来源
Notification Update in Android Oreo
Android 8.0 功能和 API

新特性一览

详细解析

通知渠道(Notification channel)

通知渠道是Android Oreo 通知更新中最重要的一个特性,android 官方认为这是一个gift 给用户还有开发者。简单一点来说就是,以后可以把重要通知和广告通知分别设到不同的渠道散,这样当用户不想要广告通知的时候就不需要把整个通知禁止或者直接把App卸载。

例如,在android o 中,系统会有这个界面



可以看到,用户可以选择关闭某个渠道的通知

创建渠道的只需要3步

代码如下

//用唯一的ID创建渠道对象
NotificationChannel adChannel = new NotificationChannel(AD_CHANNEL_ID,
      "广告渠道",
       NotificationManager.IMPORTANCE_DEFAULT);
//初始化channel
adChannel.setLightColor(Color.RED);

//向notification manager 提交channel
NotificationManager notificationManager  = (NotificationManager)
            getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(adChannel);

如果一个应用发送通知的时候没有设置channelId,将会引发崩溃

通知标志(Notification badges)

效果如图



如果不想使用badges,可以通过以下代码设置

//对,这是整个channel 控制的
mChannel.setShowBadge(false);

同时,你也能控制notifications的数字,也就是图片这个


通过以下代码控制

Notification notification = new 
Notification.Builder(MainActivity.this)
    .setNumber(messageCount)

通知清除(Notification dismissal)

API 26 中添加了这个方法

onNotificationRemoved

Parameters
sbn StatusBarNotification:一种数据结构,封装至少用于发布的原始信息(标签和ID)和源(包名称)
rankingMap NotificationListenerService.RankingMap:当前排名地图可用于检索活动通知排名信息。
reason int:REASON_LISTENER_CANCEL,等

通过判断第三个参数是REASON_CANCEL还是REASON_LISTENER_CANCEL就可以知道是用户删除还是系统删除了,然而我并不知道有啥用[doge]

背景颜色(Colorized)

设置背景颜色需要三要素

  1. 必须是ongoing notification
  2. 通过setColor,也就是用来设置LED灯的API设置颜色
  3. 通过setColorRized(true) 来开启

以下是示例代码

//当然这个代码是不能创建通知
Notification notification = new Notification.Builder(this,AD_CHANNEL_ID)
                .setOngoing(true)
                .setColor(Color.RED)
                .setColorized(true)
                .build();

锁屏排序(Lockscreen Ordering)

系统自动通过setCategory(),setPriority()addPersion()进行排序

消息样式(MessageStyle)

支持在折叠中显示更多的文字

求关注

如果我总结得不错,不妨关注一下我的微信号,每周更新安卓开发最新的资讯

-c
上一篇 下一篇

猜你喜欢

热点阅读