发表于: 2018-12-31 23:52:01
0 844
今天完成的事情
Android O 引入了 通知渠道(Notification Channels),以提供统一的系统来帮助用户管理通知,如果是针对 android O 为目标平台时,必须实现一个或者多个通知渠道,以向用户显示通知。若并不以 Android O 为目标平台,当应用运行在 android O 设备上时,其行为将与运行在 Android 7.0 上时相同。
开发者可以为需要发送的每个不同的通知类型创建一个通知渠道。还可以创建通知渠道来反映应用的用户做出的选择。例如,可以为聊天应用的用户创建的每个聊天组建立单独的通知渠道。
Android O 的用户可以使用一致的系统 UI 管理大多数与通知有关的设置。所有发布至通知渠道的通知都具有相同的行为。当用户修改任何下列特性的行为时,修改将作用于通知渠道:
重要性、声音、光线、振动、在锁屏上显示、替换免打扰模式。
用户可以访问 Settings(右划一段距离通知可以看到Settings),或长按通知来更改这些行为,甚至可以随时屏蔽通知渠道。一旦在创建完某个通知渠道并将其提交到通知管理器后,便无法通过编程方式修改通知渠道的行为,这些设置由用户掌控。
Android O 弃用了为单个通知设置优先级的功能。创建通知渠道时可以设置建议重要性级别。为通知渠道指定的重要性级别适用于发布至该渠道的所有通知消息。可以配置五个级别中的一个,这些级别代表着通知渠道可以打断用户的程度,范围是 IMPORTANCE_NONE(0)至 IMPORTANCE_HIGH(4)。默认重要性级别为 3:在所有位置显示,发出提示音,但不会对用户产生视觉干扰。创建通知渠道后,只有系统可以修改其重要性。用户可以在设置中找到。
(1)构建一个在软件包内具有唯一 ID 的通知渠道对象。
(2)为该通知渠道对象配置所需的任何初始设置(例如提示音以及对用户可见的可选说明)。
(3)将通知渠道对象提交到通知管理器。
如果试图使用初始值创建的通知渠道已存在,不会执行任何操作,因此启动应用时可以放心地执行以上步骤序列。
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// 通知渠道的id
String id = "my_channel_01";
// 用户可以看到的通知渠道的名字.
CharSequence name = getString(R.string.channel_name);
// 用户可以看到的通知渠道的描述
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// 配置通知渠道的属性
mChannel.setDescription(description);
// 设置通知出现时的闪灯(如果 android 设备支持的话)
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
// 设置通知出现时的震动(如果 android 设备支持的话)
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
//最后在notificationmanager中创建该通知渠道
mNotificationManager.createNotificationChannel(mChannel);
可以通过调用 createNotificationChannels(List < NotificationChannel > channels)一次性创建多个通知渠道。
要创建通知,需调用 Notification.Builder.build(),它返回的 Notification对象包含的指定值。要发出通知,需通过调用 [notify()](https://developer.android.google.cn/reference/android/app/NotificationManager.html#notify(int, android.app.Notification))
将 Notification对象传递给系统。创建的通知Notification对象必须包含以下内容:
小图标,由 setSmallIcon()设置
标题,由 setContentTitle()设置
详细文本,由 setContentText()设置
有效的通知渠道 ID,由 setChannelId()设置
如果 应用是以 Android O 为目标平台并且在不指定有效通知渠道的情况下发布通知,那么通知将无法发布,系统会记录错误。
注意:可以在 Android O 中启用一个新设置,当针对 Android O 的应用试图在没有通知渠道的情况下发布时,以 toast 形式显示屏幕警告。要为运行 Android O 的开发设备启用该设置,请转到 Settings > Developer options,然后打开 Show notification channel warnings。
明天的计划
生成多渠道APK
收获
通知渠道(Notification Channels)
评论