Android O 对通知部分进行了调整。导致通知在android O上无法展示。
1,新的重要特性:NotificationChannel
1)在发送通知消息前需要创建notification chanel。 chanel 创建一次即可。 不必每次发送通知前都创建。
String channelId:建议使用包名拼接
String chanelName
NotificationChannel mChannel = new NotificationChannel(channelId, chanelName, NotificationManager.IMPORTANCE_LOW); mChannel.enableLights(true);//开启灯光 mChannel.setLightColor(Color.RED); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Service.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(mChannel);
2)创建notification: 对于android O , 需要在builder 中设置chanel ID , 对应于之前创建 的chanel id 。
NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { mBuilder.setChannelId(PushMessageService.CHANEL_ID_S); }
2,android O 上聚合的通知消息。
当有多条通知消息到达的时候。 同一个chanel id 的通知消息是聚合展示在一个条目下面的。 此时下滑即全部展开。