Kotlin 開發第 15 天 Notification( NotificationManager)

Android 的 NotificationManager 是一個用於本地推播的類。
這類似於 iOS 的 UILocalNotification(in iOS 10 is deprecated 取而代之的是 UNUserNotificationCenter)

和 iOS 開發很不一樣的是,在向 Android App 進行推播的時候,不需要向用戶請求許可。

  • 提供一個按鈕,點下以後發送一個本地通知。
  • Android customize notification icon

Notification

通過 NotificationCompat.Builder 建立 notificaiton 的內容,通過 NotificationManager 來發送通知。

notificationManager.notify(id, notification)

這裡的 id 如果一直都是同一個,系統會覆蓋掉通知的內容,所以如果要發送不同的推送通知,需要給不同的 ID

setSmallIcon() 和 setLargeIcon() 的圖片位置:

關於 Small Icon 的問題

一開始在給 Android 手機設置 navigation small icon 的時候,不知道為什麼一直失敗,畫面都是顯示一個全色的方塊。

後來發現 small icon 需要給帶有透明背景的 png 檔,這裏用一張圖解釋:

另外我的測試手機是一台紅米,紅米的系統比較特別,
完全無視 setSmallIcon 和 setLargeIcon 的內容,而是拿 App icon 來使用。

後來是拿 Pixel 的模擬器來測試,才看到了兩種 icon

其他功能

.setSound 方法指定通知的音效

.setVibrate() 給通知信息加入震動提示,其中的參數是由停止時間、震動時間組成的 Pattern

.setLights 設定通知消息的閃燈效果


筆記

  • 小米手機會無視 .setSmallIcon / setLargeIcon 而是使用 App 的 Icon 作為 Notification 的顯示圖標。
  • Android 開發過程中,很多功能要看該設備的系統是否有提供,有些可能被閹割掉了。
  • 問題:如何設定一個幾小時後才發送的通知?

參考

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *