AutoJs6 文档 - 6.6.4


Notification Channel (通知渠道)#

通知渠道 (Notification Channel) 用于分类管理通知.

Android API 26 (8.0) [O] 起, 必须为所有通知分配渠道, 否则通知将不会显示.

通过将通知归类到不同渠道中, 用户可以管理 AutoJs6 的特定通知渠道, 控制每个渠道的选项和行为.

例如设置两个渠道, 水果和天气. 水果渠道用于发送与水果销量变化相关的通知, 天气渠道用于发送气象数据变化相关的通知.

不同渠道的通知可分别定制, 如是否弹出通知, 是否振动, 通知指示灯开关及颜色, 是否静音等. 渠道之间的设置是互相独立的.

注: 在安卓 7.x 系统上, 用户只能简单地启动或禁用所有 AutoJs6 的通知, 无法按渠道管理通知.

创建渠道#

如需创建通知渠道, 可使用 notice.channel.create 方法.

注: 渠道的大致创建过程, 是构建一个具有唯一渠道 ID且用户可见名称和重要性级别的 NotificationChannel 对象, 然后通过 createNotificationChannel 注册这个通知渠道.

通常, 每种不同类型的通知, 均建议创建各自的渠道. 创建时, 可自定义渠道的默认通知行为, 如指示灯颜色及是否振动等.

需额外留意, 渠道创建后, 将无法通过代码更改这些设置 (除名称, 描述, 和受条件限制的优先级之外), 对于渠道的设置, 用户拥有最终控制权.

渠道重要性#

渠道重要性会影响渠道中通知的干扰级别, 从 IMPORTANCE_NONE(0) 到 IMPORTANCE_HIGH(4) 的五个重要性级别分别对应不同程度的 "通知强度".

"通知强度" 越高, 通知的干扰性越大, 如级别 4 可能会在屏幕上弹出通知, 通常还会发出声音并使手机振动; 而级别 0 则安静地在通知栏创建通知, 甚至不会使用户有任何察觉.

渠道权限#

创建通知渠道后, 无法使用代码更改通知行为 (除名称, 描述, 和受条件限制的优先级之外), 此时用户拥有完全控制权, 如修改渠道的振动和提醒提示音等行为.

使用代码可以获取用户对渠道所应用的设置:

let channel = notice.channel.get('my_channel_id'); /* 获取渠道对象. */

channel.getImportance(); /* 获取重要性级别. */
channel.getLightColor(); /* 获取指示灯颜色. */
channel.getVibrationPattern(); /* 获取振动模式. */
channel.getSound(); /* 获取提示音. */

删除渠道#

可通过 notice.channel.remove 删除通知渠道.

删除渠道后, 如果重新创建相同 ID 的渠道, 将重新恢复之前被删除的渠道 (反删除), 且附带之前渠道的所有配置.

这样的设计是防止应用通过代码的方式恶意篡改用户对通知渠道的配置.

如需完全清除某个或某些渠道 (通常出于测试目的而创建的), 可重新安装应用或清除应用数据.