这个问题是在写一个项目中的通知消息模块时出的,报错 Failed to post notification on channel “null”
但是只是在模拟器上吐司了一下…logcat上也找不到任何消息(想哭),好了不废话。
channel是频道的意思,错误的大概意思就是我没有设置频道,然后就发现notifaction.bulider里有这个方法:
notifi.setChannelId(channel);
果断的试了下结果还是不起作用,里面传入的是一个string的字符串,被这个问题干扰了好久,就去了stack上去找答案。最后得知channeid需要在NotifactionMananger里面去创建,并且连带优先级等参数,然后在这个setChanneId()方法中去设置被NotifactionMananger创建的id,代码如下:
NotificationChannel channelbody = new NotificationChannel(channel,"消息推送",NotificationManager.IMPORTANCE_DEFAULT);
on_manmanger.createNotificationChannel(channelbody);
Notification.Builder notifi = new Notification.Builder(getApplicationContext());
notifi.setSmallIcon(R.mipmap.github);
notifi.setTicker(tickcontent);
notifi.setContentText(textcontent);
notifi.setContentIntent(pend);
notifi.setChannelId(channel);
notifi.setWhen(System.currentTimeMillis());
android.app.Notification notifi_true = notifi.build();
on_manmanger.notify(id,notifi_true);
主要就是在这个NotificationChanner这个类里面,去创建一个频道对象。然后交于NotificationMannager,安卓8.0以后对消息通知管理做出了新的规划,包括消息的优先级,以及消息的编号
不同的频道对应不同的通知。
看来以后要学的东西还很多啊。