Android 8.0 Oreo一定得實作的通知頻道Notification channels

Android 8.0 Oreo一定得實作的通知頻道Notification channels

從Android 8.0 Oreo開始,Android多了一個「通知頻道(Notification channels)」功能,讓開發者設計出不同類型的通知。如果專案的目標平台是Android 8.0(API level 26)時,開發者一定要實作通知頻道,若APP在7.1或之前的舊版本Android手機中執行,它會以舊的通知方式展示,也就是沒有通知頻道的效果。

通知頻道(Notification channels)

通知小點(Notification dot)

Android 8.0開始,桌面上的圖示終於有類似iOS的圖示Badge,可清楚的看到那個APP有通知了,如下圖箭頭所指處:

通知類別(Notification categories)

當開發者在APP中設計通知頻道後,它在使用者的操作介面中稱為「通知類別(Notification categories」,如下圖:

使用者可以自行決定那個類別要開啟或關閉它,如下圖:

專案目標平台

Android專案的targetSDKVersion要設定為26(8.0 Oreo)才能夠使用Notification channels,如下圖:

建立通知頻道

多了一個android.app.NotificationChannel類別,如果不想為你的APP設計分類功能,也得要在程式中產生一個NotificationChannel,並指定它一些必要資料,如下片段:

NotificationChannel channelLove = new NotificationChannel(
        idLove,
        "Channel Love",
        NotificationManager.IMPORTANCE_HIGH);
channelLove.setDescription("最重要的人");
channelLove.enableLights(true);
channelLove.enableVibration(true);

idLove是字串,用來分辨不同的通知頻道

之後再使用NotificationManager加入這個頻道:

notificationManager.createNotificationChannel(channelLove);

產生通知並發送

產生通知時,記得要呼叫setChannelId給它這個通知的所屬頻道Id,如下:

Notification.Builder builder =
        new Notification.Builder(this)
                .setSmallIcon(R.drawable.love)
                .setContentTitle("My Love")
                .setContentText("Hi, my love!")
                .setChannelId(idLove);
notificationManager.notify(1, builder.build());

開發時遇到比較麻煩反而是package的import問題,之前不少專案用到NotificationCompat,這下有點抖了。

多了一道讓使用者決定與分類,很貼心的設計,但可稍苦了開發人員了,但寫程式不就是一直寫就是了嗎~,小事一椿,懂了,就沒什麼大問題了。

相關文章:

Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 , 為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

發佈留言

×
×

Cart