相信大家都经历过手机应用里各种促销的消息狂轰乱炸,最后有时候在不厌其烦的情况下要么直接禁用通知,要么直接卸载。那么有没有办法让用户自己去选择接收特定的通知呢,答案是肯定的,这就用到通道的概念了。通道,顾名思义就是通知的道路,通知走哪一条道路是由开发者定义的。下面我们就来模拟下一个集成聊天消息和促销消息的应用的通知。
我们先来看看效果,首先界面效果图,界面里面包含了发送促销消息和聊天消息两个按钮:
当我们点击发送聊天消息或促销消息的时候,我们在手机的通知栏上能看到下图的通知:
这个时候我们可以打开我们手机应用管理界面,找到当前应用,在应用里面点开通知一栏,我们能看到里面有两个通知分类:聊天消息和促销消息,且都处于打开状态。
这个时候如果我们关闭促销消息的通知,我们就不会再收到促销一类的消息了。考虑到聊天类的消息我们如果误操作给关闭了,那么我们就需要给个提示了。在接收到聊天类的消息的时候检测到通知权限没有打开的话,能自动跳转到应用设置的通知权限页来打开权限。
看完了最后的实现效果,我们来一步一步的开始吧。
首先,初始化通知。
/**
* 初始化通知
*/
private void showNotification() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "chat";
String channelName = "聊天消息";
int importance = NotificationManager.IMPORTANCE_HIGH;
createNotificationChannel(channelId, channelName, importance);
channelId = "subscribe";
channelName = "促销消息";
importance = NotificationManager.IMPORTANCE_DEFAULT;
createNotificationChannel(channelId, channelName, importance