Android Notification

by phongpn3
111 views

Xin chào mọi người. Hôm nay có dịp đọc lại phần liên quan đến notification của code cũ mình đã từng implement. Mình muốn chia sẻ một chút kiến thức liên quan đến phần này. Về bản chất việc gửi nhận của notification và các implement nó. Cụ thể hơn mình xin giới thiệu 2 Platform support việc này là Firebase và Baidu (dành riêng cho thị trường Trung Quốc, vì bển đó hầu như không support các dịch vụ Google Service)

  1. Cơ chế

Đầu tiên là cơ chế: Bạn có thể tham khảo mô hình cơ chế của thằng Firebase Cloud Messaging (FCM) với phương thức truyền nhận image 1. Thiết bị tích hợp GCM / FCM sẽ gửi yêu cầu cung cấp Registration ID đến GCM / FCM server 2. GCM trả lời dựa trên thông tin App và trả về registration ID riêng cho từng thiết bị App. 3. Thiết bị App sẽ gửi ID lên server yêu cầu lưu thông tin của ID vừa nhận được tương ứng cho thiết bị lên Server đó 4. Mỗi khi server của chúng ta cần gửi yêu cầu push, nó sẽ gửi push message lên GCM, kèm cái ID mà thiết bị App đã gửi lên để lưu ở bước 3 5. GCM / FCM sẽ xem tin có hợp lệ hay không, và xem registration ID có tồn tại không, rồi gửi gói tin message. Và thiết bị App sẽ nhận được tin push.

  1. FCM

    1. Message Các bạn lưu ý có 2 loại chính trong việc gửi nhận với FCM. Từ những message này, lập trình viên chúng ta sẽ định dạng, nhận và handle hiển thị nó tương ứng trên Application.

      1. Notification Message: Message này được xử lý bởi Firebase SDK tích hợp trong ứng dụng. Chúng bao gồm tin nhắn, icon, tiêu đề. Các tin này có thể được gửi từ Firebase Console UI. Message kiểu này có dạng:

      <pre> { "to" : “registration ID …”, "notification" : { "body" : “Body “, "title" : "Title Message“, "icon" : “Icon Message“ } } </pre>

      1. Data Message: Message loại này sẽ cần được xử lý bởi lập trình viên. Loại Message này không thể được gửi từ Firebase Console như trên. Với message loại này, các bạn cần tự xây dựng backend riêng của mình, message có dạng <pre> { "to" : "registration ID …", "data" : { "name" : “Name message “, “Message content” : “Content”, “Icon” : "Icon"
        } } </pre>
    2. Đối tượng nhận tin

      1. Global: Notification sẽ được gửi đến tất cả các đối tượng đã đăng kí với Server (Ví dụ thông báo tin nhắn chung mà tất cả những ai đã cài app đều có thể nhận được)
      2. Topic: Tin nhắn sẽ được gửi cho các đối tượng đã đăng ký một topic nào đó (Ví dụ bài toán này là việc khi app muốn chỉ những người tại một ngôn ngữ, hay một nhóm nhất định, chỉ nhóm đó mới nhận được, hoặc để từng nhóm có thể nhận được các loại khác nhau. Trong trường hợp này Topic sẽ phát huy tác dụng của nó)
      3. Individual: Đây là việc nhận gửi tin nhắn trực tiếp đến một đối tượng của thể thông qua ID đăng kí duy nhất của nó (Ví dụ bài toán này có thể kể tới là các app chat, gửi củ thể đến từng người riêng biệt)
    3. Thực hiện

      1. Config FCM trên Firebase Các bạn có thể theo hướng dẫn https://firebase.google.com/docs/cloud-messaging/android/client. Điều lưu ý là các bạn kiểm tra kĩ file json config được thêm dưới Project App.

      2. Đăng kí Topic: Sau đây mình xin giới thiệu về việc đăng kí theo loại Topic và handle chúng. image

        image

        image

        Sau khi lấy dữ liệu, bạn có thể sử dụng đối tượng NotificationCompat.Builder để thực hiện setup hiển thị data lên UI Notification tương ứng.

  2. Baidu Notification

    Để phục vụ cho thị trường China chặn hầu hết dịch vụ Google Service. Chúng ta sử dụng Baidu Notification như là một công cụ thay thế.

    Bước 1: Tạo tài khoản Nhà phát triển mới trên nền tảng Baidu. (Chú ý cần sử dụng Số điện thoại của China để tạo tài khoản)

    Bước 2: Tải xuống Android SDK cho các dịch vụ đẩy Baidu từ link dưới đây: http://push.baidu.com/sdk/push_client_sdk_for_android

    Bước 3: Tích hợp SDK đã tải xuống ở trên vào ứng dụng của bạn giống như cách bạn làm đối với bất kỳ SDK nào có tệp * .so (Thư viện tệp đối tượng được chia sẻ). Việc chúng ta cần đưa chúng vào jniLibs folder image

    Bước 4: Sau đó, giống như trong GCM console, bạn tạo một ứng dụng mới với Id ứng dụng / Tên gói, trong Baidu bạn cũng cần làm như vậy. Đó là truy cập vào URL bên dưới (Đảm bảo bạn đã đăng nhập): http://push.baidu.com/console/app

    Trên trang bảng điều khiển này Tạo ứng dụng mới (Sử dụng plugin Google dịch trên Chrome).

    Bước 5: Sau khi ứng dụng mới được tạo, ứng dụng của bạn sẽ được cấp một API Key và Secret Key. Để nhận Thông báo đẩy, bạn cần sử dụng API Key theo hướng dẫn:

    http://push.baidu.com/doc/android/api

    Tất cả các bước phát triển được chỉ định trong liên kết trên. Chỉ cần dịch trang để làm theo cùng một.

    Bước 6: Trong GCM, bạn có thể gửi thông báo đẩy bằng bảng điều khiển GCM hoặc bạn có thể sử dụng máy chủ của riêng mình để gửi thông báo GCM tới thiết bị. Nó cũng vậy trên Baidu. Sau đây là đoạn code việc nhận và hiển thị Baidu notification các bạn có thể tham khảo. image

    image

    image

    Trong link hướng dẫn của Baidu document. Cũng có 1 project sample, các bạn cũng có thể tham khảo.

    Trên đây là bài viết của mình liên quan đến việc xử lý Notification của FCM và Baidu. Hy vọng có thể ít nhiều giúp các bạn có thể hiểu thêm và có thêm một nơi tham khảo cho việc xử lý này.

    Hẹn gặp lại mọi người ở bài viết sắp tới.

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.