Push notification trong Android sử dụng FCM

Bạn có thể dễ dàng gửi push notifications trong Android (thông báo đẩy) bằng Firebase Cloud Messaging. Trong bài viết hôm nay, chúng ta sẽ thảo luận về các bước và mẹo để triển khai quy trình này.

Trước tiên, hãy xem qua những điều cơ bản về việc triển khai thông báo đẩy trên các thiết bị Android.

Push notification trong Android sử dụng FCM

Push notifications trong Android là gì?

Thông báo đẩy là dạng thông báo yêu cầu người dùng cho phép nhận, thường hiển thị văn bản hoặc các phương tiện khác như hình ảnh, biểu tượng cảm xúc hoặc GIF, giúp người dùng thực hiện một hành động cụ thể.

Các thông báo này đóng vai trò là kênh giao tiếp giúp các nhà phát triển hoặc doanh nghiệp truyền tải thông điệp, ưu đãi và các bản cập nhật đến người dùng.

Một ví dụ về thông báo đẩy là khi có một bài đăng mới từ một người dùng Twitter mà bạn đã theo dõi, bạn sẽ nhận được thông báo mỗi khi họ đăng bài. Nút nhận thông báo này thường xuất hiện ở phần hồ sơ người dùng, thường là biểu tượng chuông.

Cấu trúc của push notifications

Thiết kế thông thường của một thông báo đẩy bao gồm các yếu tố sau:

  • Tiêu đề
  • Thông điệp
  • Hình ảnh (GIF, biểu tượng cảm xúc)
  • URL

Tuy nhiên, thông điệp opt-in (cho phép nhận thông báo) đầu tiên mà bạn gửi sẽ quyết định sự thành công của chiến dịch thông báo đẩy của bạn.

Do đó, điều quan trọng là phải truyền đạt rõ giá trị của thông báo và kêu gọi người dùng thực hiện hành động. Hãy hỏi họ xem họ có muốn nhận thông báo của bạn hay không.

Các loại push notifications trong Android

Có nhiều loại thông báo đẩy bao gồm:

1. Thông báo đẩy trên web

Thông báo này được gửi đến người dùng thông qua trình duyệt web trên máy tính để bàn hoặc điện thoại di động. Thông báo xuất hiện từ phía trên hoặc góc dưới bên phải của màn hình máy tính.

Loại thông báo này chủ yếu được sử dụng bởi các nhà tiếp thị số để tăng cường chuyển đổi. Các nhà phát triển ứng dụng cũng có thể sử dụng chúng để gửi thông báo về cập nhật ứng dụng hoặc thông báo cho người đăng ký.

2. Thông báo đẩy trên ứng dụng di động

Nếu người dùng đã cài đặt ứng dụng trên điện thoại, thông báo đẩy sẽ được kích hoạt trên thiết bị di động của họ.

Khi người dùng mở ứng dụng, một mã định danh duy nhất sẽ đăng ký cho cả ứng dụng và hệ điều hành của thiết bị di động. Thông báo đẩy trên điện thoại sẽ xuất hiện ở ba vị trí:

  • Màn hình khóa
  • Biểu ngữ
  • Trung tâm thông báo

Firebase Cloud Messaging (FCM) được dùng để làm gì?

Ban đầu được gọi là Google Cloud Messaging (GCM) dành cho Android, Firebase Cloud Messaging (FCM) là một giải pháp nhắn tin đa nền tảng, cho phép bạn gửi thông điệp thông báo đáng tin cậy mà không tốn chi phí.

Ngoài việc gửi thông báo đẩy, FCM còn cung cấp các tính năng khác mà các nhà phát triển có thể truy cập như:

  • Quảng cáo AdMob
  • Phân tích (Analytics)
  • Thông báo trong ứng dụng
  • Cấu hình từ xa
  • Đăng nhập xã hội
  • Chức năng đám mây

FCM cho phép các nhà phát triển Android và ứng dụng khác gửi thông báo đẩy đến người dùng thông qua giao diện lập trình ứng dụng (API).

Hai loại thông điệp trong Firebase Cloud Messaging (FCM) là gì?

Có hai loại thông điệp được gửi qua FCM:

1. Thông điệp dữ liệu

Thông điệp dữ liệu là thông tin được tạo ra, gửi, nhận, lưu trữ và xử lý bằng phương tiện điện tử.

Các nhà phát triển phần mềm không thể gửi thông điệp dữ liệu thông qua Firebase Console mà phải sử dụng API của Firebase và cần logic phía máy chủ.

FCM giới hạn kích thước thông điệp dữ liệu ở mức 4KB. Nếu vượt quá giới hạn, bạn sẽ cần thêm dữ liệu bằng các công cụ như JobScheduler và WorkManager API.

2. Thông điệp thông báo

Thông điệp thông báo bao gồm các biểu tượng, tiêu đề, thông điệp, tên ứng dụng, và nhiều hơn nữa.

Thông báo đẩy này giúp người đăng ký nhận thông báo về ưu đãi, cập nhật, và nhiều thông tin khác trực tiếp trên thiết bị di động hoặc máy tính.

Thông điệp thông báo

Tại sao nên gửi thông báo đẩy qua Firebase Cloud Messaging?

Có nhiều lý do để bạn gửi thông báo đẩy bằng FCM:

  1. Gửi thông điệp đến bất kỳ thiết bị nào
    FCM cho phép gửi thông điệp không chỉ đến thiết bị Android mà còn hỗ trợ iOS và web miễn phí.

  2. Gửi nội dung thông báo cá nhân hóa
    Bạn có thể gửi dữ liệu và thông điệp tùy chỉnh ngay lập tức hoặc trong tương lai theo múi giờ của người dùng.

  3. A/B test thông báo
    FCM cho phép bạn thử nghiệm các phiên bản khác nhau của thông điệp thông báo để tìm ra phiên bản hiệu quả nhất.

Tại sao nên gửi thông báo đẩy qua Firebase Cloud Messaging?

Cách gửi push notifications trong Android bằng FCM

Việc triển khai FCM bao gồm hai thành phần:

  • Một môi trường đáng tin cậy, chẳng hạn như Cloud Functions for Firebase để tạo, nhắm mục tiêu và gửi thông điệp.
  • Một ứng dụng Android, iOS hoặc web để nhận thông điệp thông qua dịch vụ vận chuyển nền tảng tương ứng.

Hiểu về kiến trúc Firebase Cloud Messaging (FCM)

Kiến trúc của FCM dùng để xây dựng, vận chuyển, nhận và gửi thông báo đẩy bao gồm các thành phần sau:

  • Các công cụ thích hợp để tạo và xây dựng thông điệp. Để xây dựng tự động hóa toàn diện cho tất cả các loại thông điệp, bạn phải dựa trên các môi trường máy chủ đáng tin cậy.

Ngoài ra, các môi trường này cần hỗ trợ Firebase Admin SDK hoặc các giao thức máy chủ FCM. Môi trường này có thể là máy chủ ứng dụng của bạn, Cloud Functions for Firebase, hoặc App Engine.

  • Back-end của FCM chấp nhận yêu cầu thông điệp, thực hiện việc phân phát thông điệp qua các chủ đề, và tạo siêu dữ liệu thông điệp như ID của thông điệp.
  • Tầng vận chuyển, trong trường hợp này là tầng vận chuyển Android (Android Transport Layer - ATL) dành cho các thiết bị Android để định tuyến thông điệp đến đối tượng mục tiêu. Đối với các ứng dụng web, sử dụng giao thức đẩy web (Web Push Protocol).
  • FCM SDK trên thiết bị của người dùng, nơi các thông báo đẩy sẽ được hiển thị.

Hiểu về kiến trúc Firebase Cloud Messaging (FCM)

Quy trình từng bước để gửi thông báo đẩy trên Android bằng FCM

Sử dụng Firebase Console, bạn có thể tải xuống các tệp cấu hình Firebase từ console và sau đó di chuyển chúng vào dự án Android của mình.

Bước 1: Tạo một dự án Firebase để kết nối với ứng dụng Android của bạn. Tìm hiểu cách hoạt động của các dự án Firebase.

Bước 2: Đăng ký ứng dụng Android của bạn với dự án Firebase.

Bước 3: Thêm tệp cấu hình Firebase

Tải xuống và thêm tệp cấu hình Firebase (google-services.json)

Để làm cho các giá trị trong tệp cấu hình google-services.json có thể truy cập được cho Firebase SDKs, bạn cần plugin Google services Gradle (google-services).

Thêm plugin Google Services như một phụ thuộc buildscript:

buildscript {
    repositories {
      // Đảm bảo rằng bạn đã có hai kho lưu trữ sau
      google()  // Kho lưu trữ Maven của Google
      mavenCentral()  // Kho lưu trữ Maven Central
    }
    dependencies {
      ...
      // Thêm phụ thuộc cho plugin Gradle Google Services
      classpath 'com.google.gms:google-services:4.3.15'
    }
}
allprojects {
  ...
  repositories {
    // Đảm bảo rằng bạn đã có hai kho lưu trữ sau
    google()  // Kho lưu trữ Maven của Google
    mavenCentral()  // Kho lưu trữ Maven Central
  }
}

b. Trong tệp Gradle của module ứng dụng (app-level) của bạn (thường là <project>/<app-module>/build.gradle), thêm plugin Google Services:

plugins {
    id 'com.android.application'
    // Thêm plugin Google Services Gradle
    id 'com.google.gms.google-services'
    ...
}

Bước 4: Thêm Firebase SDKs vào ứng dụng của bạn

Trong tệp Gradle của module ứng dụng (app-level) của bạn (thường là <project>/<app-module>/build.gradle), thêm các phụ thuộc cho các sản phẩm Firebase mà bạn muốn sử dụng trong ứng dụng của mình. Chúng tôi khuyên bạn nên sử dụng Firebase Android BoM để quản lý phiên bản thư viện.

dependencies {
  // ...
  // Nhập Firebase BoM
  implementation platform('com.google.firebase:firebase-bom:31.4.0')

  // Khi sử dụng BoM, bạn không cần chỉ định phiên bản cho các thư viện Firebase

  // Thêm phụ thuộc cho Firebase SDK cho Google Analytics
  implementation 'com.google.firebase:firebase-analytics'

  // TODO: Thêm phụ thuộc cho các sản phẩm Firebase khác mà bạn muốn sử dụng
  // Ví dụ, thêm phụ thuộc cho Firebase Authentication và Cloud Firestore
  implementation 'com.google.firebase:firebase-auth'
  implementation 'com.google.firebase:firebase-firestore'
}

Sau khi thêm các phụ thuộc cho các sản phẩm mà bạn muốn sử dụng, hãy đồng bộ dự án Android của bạn với các tệp Gradle.

Kết luận

Khi thử nghiệm push notifications trong Android bằng FCM, bạn có thể gửi thông báo thử nghiệm từ trình biên soạn thông báo.

Ngoài ra, bạn có thể gửi thông báo đến nhiều thiết bị theo hai cách:

  • Gửi theo chủ đề: Tập trung vào các chủ đề mà người đăng ký muốn nhận.
  • Gửi theo nhóm thiết bị: Cho phép gửi cùng một thông báo đến nhiều thiết bị.