APP请求系统通知(“Notifications 通知”拆解)

Posted xhBruce

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP请求系统通知(“Notifications 通知”拆解)相关的知识,希望对你有一定的参考价值。

APP请求系统通知(“Notifications 通知”拆解)

android12-release


APP创建Notification并请求

系统通知框架

  1. IBinder通信到
IBinder b = ServiceManager.getService("notification");
sService = INotificationManager.Stub.asInterface(b);
  1. 日志Slog.v(TAG, "enqueueNotificationInternal: pkg=" + pkg + " id=" + id + " notification=" + notification);

  2. channel == null:从 Android 8.0(API 级别 26)开始,必须为所有通知分配渠道,否则通知将不会显示。

  3. NotificationRecord包含notification相关信息

  4. EnqueueNotificationRunnable/PostNotificationRunnable经过两道run()处理,最后NotificationListenerService通知监听显示

  5. 日志if (DBG) Slog.d(TAG, "EnqueueNotificationRunnable.run for: " + n.getKey());,这里正真通知添加队列,并输出Eventri日志EventLogTags.writeNotificationEnqueue

  6. 调用NotificationListenerService实例对象的onNotificationPosted()
    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java

通知中振动/铃声/呼吸灯 notification_alert

应用请求系统通知在PostNotificationRunnable过程中buzzBeepBlinkLocked(r)方法处理振动/铃声/呼吸灯

  1. if (DBG) Slog.v(TAG, "Interrupting!");该日志表示将要开始处理振动/铃声
  2. 呼吸灯处理
  3. buzzBeepBlink = (buzz ? 1 : 0) | (beep ? 2 : 0) | (blink ? 4 : 0);应用请求了振动/铃声/呼吸灯输出notification_alert日志

以上是关于APP请求系统通知(“Notifications 通知”拆解)的主要内容,如果未能解决你的问题,请参考以下文章

通信通知 Communication Notifications 的实现 (iOS 15+)

通信通知 Communication Notifications 的实现 (iOS 15+)

通信通知 Communication Notifications 的实现 (iOS 15+)

NotificationManagerService启动(“Notifications 通知”拆解)

Dynamics 365Online 应用内消息通知(In-app notifications)

Dynamics 365Online 应用内消息通知(In-app notifications)