12/08/2018, 17:28

Giới thiệu về Notification Channels và Badges trên Android O

1. Introduction Notification channels và Badges là một trong nhiều tính năng được update trên Android O. Bắt đầu từ Android O, tất cả các notification của bạn sẽ được chia vào các Notification channels khách nhau, tùy thuộc vào từng loại notification mà app gửi đi. Bằng việc sử dụng các channel ...

1. Introduction

Notification channels và Badges là một trong nhiều tính năng được update trên Android O. Bắt đầu từ Android O, tất cả các notification của bạn sẽ được chia vào các Notification channels khách nhau, tùy thuộc vào từng loại notification mà app gửi đi. Bằng việc sử dụng các channel mà bạn có thể dễ ràng phân biệt được các loại communication khác nhau, và cung cấp các loại âm thanh mặc định khác nhau, mức độ "importance" - ưu tiên, icons, và nhiều thứ khác nữa. Khi notification channels có trên thiết bị của bạn, thì bạn có toàn quyền kiểm soát và cài đặt trên mỗi notification channel.

Tại sao cần phải biết Notification Channels?

Tất cả ứng dụng mà targeting là Android O đều PHẢI có một notification channel. Các ứng dụng mà không xác định đúng và không sử dụng notification channels sẽ không thể hiển thị được biết cứ notification nào. Khi bạn tạo channels cho notification của bạn, thì bạn sẽ mang lại cho user:

  • Được kiểm soát nhiều hơn notification của họ: Họ có thể tham gia vào các loại notification cho ứng dụng của bạn thay vì bị ép buộc vào một quyền quyết định hoàn toàn hoặc nothing.
  • Standardized UI: Notification settings UI trên Android O được base trên notification channels và là trải nghiệm chuẩn hóa cho người dùng.
  • Explicit and predictable: Người dùng có thể nhìn thấy tất cả các cài đặt khác nhau mà họ có cho notification channels. Bất cứ khi nào mà họ thay đổi setting của một channel, nó sẽ được áp dụng cho mọi notification trong channel và không thể bị overridden bởi app. Điều này có nghĩa là những lựa chọn, những setting của người dùng luôn được tôn trọng và không có sự khác biệt giữa những thứ người dùng chọn và hành vi notification của app.

Notification framework cho Android O sẽ quản lý tự động giúp bạn. Ngoài ra, notification là cơ sở cho notification badges.

Sau đây mình sẽ giới thiệu qua cách đơn giản để implement notification trên Android O.

Có một chú ý nhỏ về Badges: Là không phải tất cả launchers nào cũng support badging nha. Bạn có thể thử kiểm tra xem device của bạn có support không bằng cách: Settings > Apps & notifications > Advanced > Special app access > Notification access -> turning on badging

2. Create a Notification Channel

Choosing Notification Channels

Để bắt đầu, bạn hãy tạo ra một notification channel. Notification channel sẽ đại điện cho 1 loại notification của app của bạn, và users có thể setting được cho loại notification đó. Khi tạo channel, trước tiên bạn cần xác định những loại notification riêng biệt mà app của bạn sẽ gửi. Ví dụ với 2 loại notification: notification về những người follow bạn, notification về tin nhắn gửi đến bạn. Vì vậy, ta sẽ thực hiện tạo 2 notification channel.

Note: Có thể bạn không thực hiện điều này cho app của bạn, bạn cũng có thể tạo các notification channel khi người dùng lựa chọn trong app của bạn. Ví dụ: bạn có thể thiết lập các notification channel riêng cho từng nhóm chat được tạo bởi người dùng trong messaging app.

Creating a Notification Channel

Bạn có thể tạo một NotificationChannel bằng cách như sau:

Followers Channel

// Create the channel object with the unique ID FOLLOWERS_CHANNEL.
val followersChannel = NotificationChannel(
       FOLLOWERS_CHANNEL,
       getString(R.string.notification_channel_followers),
       NotificationManager.IMPORTANCE_DEFAULT)

// Configure the channel's initial settings
followersChannel.lightColor = Color.GREEN
followersChannel.vibrationPattern = longArrayOf(100, 200, 300, 400, 500, 400, 500, 200, 500)

// Submit the notification channel object to the notification manager
mNotificationManager.createNotificationChannel(followersChannel)

Lưu ý: Nếu bạn cố gắng tạo 1 channel đã tồn tại, sẽ không có thao tác nào được thực hiện. Điều này có nghĩa là bạn có thể thực hiện điều này một cách an toàn mỗi khi start app. Điều này cũng có nghĩa là nếu bạn gọi createNotificationChannel(followersChannel) và sau đó cố thay đổi followersChannel config, thì những config này sẽ được bỏ qua. Hãy luôn luôn config channel settings và gọi createNotificationChannel.

Tạo channel Direct Messages:

// Create the channel object with the unique ID FOLLOWERS_CHANNEL.
val directMessagesChannel = NotificationChannel(
       DIRECT_MESSAGES_CHANNEL,
       getString(R.string.direct_messages_chanel),
       NotificationManager.IMPORTANCE_DEFAULT)

// Configure the channel's initial settings
directMessagesChannel.lightColor = Color.BLUE
directMessagesChannel.vibrationPattern = longArrayOf(100, 200, 300, 400, 500, 400, 500, 200, 500)

// Submit the notification channel object to the notification manager
mNotificationManager.createNotificationChannel(directMessagesChannel)

Sau khi đã tạo xong channels, thực hiện các bước sau: Settings > Apps & notifications > App info > NotificationChannels > App notifications Và bạn có thể sẽ nhìn thấy channels của bạn.

3. Send the Notification

Trên Android O, có thể bạn sẽ không thấy một notification nào được gửi đi khi sử dụng Notification.Builder(getApplicationContext()). Bởi vì như đã nói ở trên đầu, với Android O, tất cả các notification đều cần một notification channel.

Và đây là cách bạn có thể gửi một notification trên Android:

fun getNotificationFollower(title: String, body: String): Notification.Builder {
   return Notification.Builder(applicationContext, FOLLOWERS_CHANNEL)
           .setContentTitle(title)
           .setContentText(body)
           .setSmallIcon(smallIcon)
           .setAutoCancel(true)
           .setContentIntent(pendingIntent)
}

Chú ý là FOLLOWERS_CHANNEL chính là ID khi khởi tạo Followers Channel ở trên.

Note: Ngoài việc setting một channel, thì bạn cũng phải setting những field sau cho tất cả notification của bạn:

  • setSmallIcon()
  • setContentTitle()
  • setContentText()
  • setChannelId()

4. Notification Settings

Như đã nói ở trên thì Notification channel trên Android O sẽ được chú trọng hướng tới trải nghiệm người dùng, người dùng có thể tùy chỉnh thoải mái cái settings cho notification. Ở trên chúng ta đã thực hiện tạo channels, cách để send notification, vậy giờ hãy run app và thực hiện send notification. Khi đã có notification user có thể vào màn hình settings của notification bằng cách giữ notification -> select ALL CATEGORIES:

Và màn hình settings sẽ hiện ra:

Và hãy chọn channel mà bạn muốn thực hiện tùy chỉnh:

Như vậy bạn có thể thấy được người dùng sẽ có thể dễ dàng tùy chỉnh Notification trên Android O.

5. Notification Badges

Notification badges đã được support trên Android O (nhưng không phải all launchers             </div>
            
            <div class=

0