12/10/2018, 15:31

Custom Notification Groups

Cũng như mọi năm khi có một phiên bản hệ điều hành iOS mới ra sẽ có nhiều tính năng mới được giới thiệu. Trong bản iOS 12 năm nay có khá nhiều tính năng mới và Grouped Notifications là một trong số những tính năng đó. Hôm nay tôi sẽ giới thiệu qua cho các bạn về tính năng mới này. Khi mà bạn có ...

Cũng như mọi năm khi có một phiên bản hệ điều hành iOS mới ra sẽ có nhiều tính năng mới được giới thiệu. Trong bản iOS 12 năm nay có khá nhiều tính năng mới và Grouped Notifications là một trong số những tính năng đó. Hôm nay tôi sẽ giới thiệu qua cho các bạn về tính năng mới này.

Khi mà bạn có nhiều thông báo đến cùng một lúc, với những hệ điều hành cũng sẽ hiển thị rời rạc từng thông báo trên màn hình. Nếu số lượng quá nhiều chúng ta sẽ khó theo dõi và không biết những thông báo nào được push về là quan trọng, cần sắp xếp lên đầu để đọc. Với những bất tiện đấy Grouped Notifications được ra đời. Hỗ trợ người dùng quản lý Notifications cùng lúc.

Trong iOS 12 có 3 settings cho Grouped Notifications:

  • Automatic: Đây là cài đặt mặc định, cài đặt này sẽ cho phép bạn groups notification một cách "thông minh" cho các ứng dụng. Dựa trên tiêu đề, nội dung...của notifications để grouped lại.
  • By App: Cài đặt này sẽ nhóm lại những notifications của từng ứng dụng lại với nhau. Mỗi ứng dụng sẽ là một groups riêng biệt
  • Off: Ta sẽ tắt tính năng groups notification này đi và thông báo sẽ được hiển thị rời rạc, giống như các phiên bản iOS cũ.

Để cho dễ dàng việc test chức năng mới này chúng ta sẽ sử dụng Local Notifications để test. Sử dụng Local Notifications có thể chạy được trên máy ảo nên chúng ta không cần phải có Apple Developer Account. Nên sẽ dễ dàng hơn cho việc test.

Đầu tiên chúng ta đăng ký Local Notifications bằng đoạn code sau ở AppDelegate:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        self.registerLocalNotifications()
        return true
    }

    // MARK: - Notifications
    func registerLocalNotifications() {
        // Ask for Notification Permissions
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.sound, .alert, .badge]) { granted, _ in
            DispatchQueue.main.async {
                if granted {
                    UIApplication.shared.registerForRemoteNotifications()
                } else {
                    // Handle error or not granted scenario
                }
            }
        }
    }

Sau khi đăng ký xong bạn nhớ nhấn Allow để App nhận được Notifications. Tiếp theo chúng ta sẽ sử dụng Schedule Notifications để push local notifications về Simulator của chúng ta. Để cho đơn giản chúng ta chỉ cần một button để push local notifications sao cho sau 5 giây chúng ta sẽ nhận được push notifications về. Chúng ta sử dụng đoạn code sau:

    // MARK: - Action
    @IBAction func testGroupedNotificationsAction(_ sender: Any) {
        self.scheduleGroupedNotifications()
    }
    
    //MARK: - Schedule Notifications
    func scheduleGroupedNotifications() {
        for i in 1...6 {
            let notificationContent = UNMutableNotificationContent()
            notificationContent.title = "Xin chào!"
            notificationContent.body = "Test chức năng Grouped Notifications!"
            notificationContent.sound = UNNotificationSound.default
            
            if i % 2 == 0 {
                notificationContent.threadIdentifier = "Test 1"
                notificationContent.summaryArgument = "Argument 1"
            } else {
                notificationContent.threadIdentifier = "Test 2"
                notificationContent.summaryArgument = "Argument 2"
            }
            // Deliver the notification in five seconds.
            let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
            // Schedule the notification.
            let request = UNNotificationRequest(identifier: "(i)5s", content: notificationContent, trigger: trigger)
            let center = UNUserNotificationCenter.current()
            center.add(request) { (error: Error?) in
                if let theError = error {
                    print(theError)
                }
            }
        }
    }

Trong đoạn code trên chúng ta sẽ demo với sáu local notifications được push về cùng lúc. Nhìn vào đoạn code bên trên ta thấy có hai thuộc tính threadIdentifier và summaryArgument. Trong đó:

  • threadIdentifier: Được sử dụng là id duy nhất cho notifications đấy. Với các Notifications đăng ký với id này sẽ được nhóm lại với nhau thành một nhóm. Vây nhìn vào đoạn code ta thấy sáu notifications được nhóm thành hai nhóm riêng biệt là nhóm Test 1 và Test 2.
  • summaryArgument: Thông tin mô tả về tên groups notifications.

Kết quả sẽ được hiển thị như hình sau:

Nguồn tham khảo: https://developer.apple.com/videos/play/wwdc2018/711/

Bài liên quan

[Swift] - Custom Push Notification có hình ảnh trên iOS

1. Thiết lập Capabilities trong xcodeproj của bạn. Truy cập xcodeproj của bạn trong xcode, chọn Capabilities và bật Push notifications và Background Modes lên > Tích chọn Remote Notifications. Xcode sẽ tạo cho bạn app id trong Apple Developer. 2. Tạo APNs để gửi thông báo. Truy cập ...

Hoàng Hải Đăng viết 2 tuần trước

Custom Notification Groups

Cũng như mọi năm khi có một phiên bản hệ điều hành iOS mới ra sẽ có nhiều tính năng mới được giới thiệu. Trong bản iOS 12 năm nay có khá nhiều tính năng mới và Grouped Notifications là một trong số những tính năng đó. Hôm nay tôi sẽ giới thiệu qua cho các bạn về tính năng mới này. Khi mà bạn có ...

Trần Trung Dũng viết 15:31 ngày 12/10/2018

Tạo custom notification cho ứng dụng Android

Để đảm bảo notification trong ứng dụng của bạn hiển thị tốt nhất và đồng nhất giữa các version của Android, bạn nên sử dụng các template chuẩn cho notification. Tuy nhiên nếu các templates đó không đáp ứng nhu cầu của bạn, bạn có thể tạo layout riêng cho notification. Notification Channel Bắt ...

Tạ Quốc Bảo viết 18:09 ngày 24/09/2018

Custom Toast Notification (Tạo toast giống giao diện của push notification)

Xây dựng abstract base adpater The walking step - Đếm bước chân di chuyển Trong bài viết này mình sẽ hướng dẫn các bạn thay đổi giao diện Toast nhàm chán như mặc định thành giao diện giống push notification. Cấu trúc của project : Do mình dùng databinding nên chúng ta sẽ add thêm ...

Hoàng Hải Đăng viết 15:41 ngày 12/08/2018

Rpush - The push notification service for Ruby

Rpush là một gem được dùng để gửi thông báo từ server cho client trong Ruby. Ngoài những ưu điểm là dễ sử dụng, tính chính xác cao. Rpush còn cũng cấp rất nhiều những tính năng mới mà không có ở những gem khác. Cho phép bạn kiểm soát tốt hơn. Hỗ trợ nhiều Service Apple Push Notification ...

Hoàng Hải Đăng viết 11:03 ngày 12/08/2018
0