Notification 是顯示在手機狀態欄的通知 ----- 手機狀態欄位於手機屏幕的最上方,那裏一般顯示手機當前的網絡狀態、電池狀態、時間等。Notification 所代表的是一種具有全局效果的通知,程序一般通過 NotificationManager 服務來發送 Notification。
Android 爲 Notification 提供了 Notification.Builder 類,通過該類允許開發者更輕手的創建 Notification 對象。 Notification.Builder 提供瞭如下常用方法:
- setDefaults():設置通知 LED 燈、音樂、振動等;
- setAutoCancel():設置點擊通知後,狀態欄自動刪除通知;
- setContentTitle():設置通知標題;
- setContentText():設置通知內容;
- setSmallIcon():爲通知設置圖標;
- setLargeIcon():爲通知設置大圖標;
- setTick():設置通知在狀態欄的提示文本;
- setContentIntent():設置點擊通知後將要啓動的程序組件對應的 PendingIntent ;
Android 8 加入了通知 Channel 幫助用戶來統一管理通知,開發者可以爲不同類型的通知創建同一個通知 Channel ,而用戶則可通過該 Channel 統一管理這些通知的行爲 ------ 所有使用同一個 Channel 的通知都具有相同的行爲。
通知 Channel 可統一管理通知的如下行爲:
- 重要性;
- 聲音;
- 閃光燈;
- 振動;
- 在鎖屏上顯示;
- 替換免打擾模式;
APP 第一次運行時可通過程序設置通知 Channel 的行爲,但用戶完全可以通過 Settings 來改變通知 Channel 的行爲,甚至可以隨時屏蔽通知 Channel 。一旦用戶修改了該通知 Channel 的行爲之後,程序將無法通過編程方式修改通知 Channel 的行爲,這些設置完全有用戶控制。
Android 9 再次改進了消息機制,它新增如下兩個功能。
- 增強了通知參與者的支持。程序在創建 MessageStyle 時應使用 Person (支持名字、頭像等)作爲參數,不推薦使用普通的 CharSequence 作爲參數,這樣可爲通知參與者設置更豐富的信息;
- 消息支持更豐富的數據。Message 對象可使用 setData() 方法設置更多樣的通知數據(如圖片),而不像以前僅支持文字通知。
發送 Notification 很簡單,按如下步驟進行即可:
- 調用 getSystemService(NOTIFICATION_SERVICE) 方法獲取系統的 NotificationManager 服務;
- 創建 NotificationChannel 對象,並在 NotificationManager 上創建該 Channel 對象;
- 通過構造器創建一個 Notification.Builder 對象;
- 爲 Notification.Builder 設置通知的各種屬性;
- 創建 MessageStyle 和 Message , 通過 Message 設置消息內容,爲 Notification.Builder 設置 MessageStyle 後創建 Notification;
- 通過 NotificationManager 發送 Notification;