iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0

Notification

實作流程

建立 Notification

我們想要使用者能夠擊點 Notification 進入 Activity

val intent = Intent(this, HelloActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or (Intent.FLAG_ACTIVITY_NEW_TASK)

val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

intent 跟 pendingIntent 兩個主要的差別,pendingIntent 是將 intent 封裝更好,能夠 intent 資料到其他的 application。

關於 pending 更深入的使用請看這裡

之後我們需要建立一個 Notification


val mBuilder = NotificationCompat.Builder(this, "Lester")
                .setSmallIcon(R.drawable.notification_icon_background)
                .setContentTitle("Hello")
                .setContentText("How are you?")
                .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                .setVibrate(longArrayOf(0,1000))
                .setFullScreenIntent(pendingIntent, false)
                .setAutoCancel(true)

預設必要的的參數為 SmallIcon, ContentTitle, ContentText 其他的的參數都可以依自己需求加上

這裡有幾個特別說明 setVibrate 裡需要 傳入一個 longArray 參數來代表 (等待毫秒, 震動毫秒) 可以傳入更多值來自定震動狀態

setFullScreenIntnet 與 setContentIntent 都可以做到相同效果,但 setFullScreenIntent 會有 popup 效果。

setAutoCancel(true) 讓使用者按下通知後就會消失

設定好我們的 Notificaiton 後就是讓他可以出現在 Status Bar 上

with(NotificationManagerCompat.from(this)) {
            notify(123, mBuilder.build())
        }

這裡要特別注意 notify 第一個參數是指 notification id 如果我們有很多 notificaiton 的時候,系統就是靠這個來判斷。

建立 Channel

Android 8.0 以上後,我們使用 Notification 都需要建立 Channel 讓使用者可以通過 設定 -> 通知 來改變個 APP 的通知狀態

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val name = "LesterChannel"
            val descriptionText = "2018-10-17-test"
            val importance = NotificationManager.IMPORTANCE_DEFAULT
            val channel = NotificationChannel("Lester", name, importance).apply {
                description = descriptionText
            }

建立一個 NotificationChannel 需要三個參數 分別是 channelid, channelname, importance

importance 跟 priority 的比較可以看這裡

這樣我們就可以創造出一個 Channel 了

今天就先這樣囉,我們明天見。


上一篇
Day21_BallAnimator
下一篇
Day23_更新 RecyclerView 畫面
系列文
發現新大陸-Android Kotlin 開發之路30

尚未有邦友留言

立即登入留言