Tin nhắn đẩy phát đa hướng đầu tiên của bạn sử dụng chủ đề FCM

1. Giới thiệu

Bàn thắng

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách trang bị ứng dụng đa nền tảng để có thể truyền phát đa hướng các thông báo đẩy đến các nhóm con khác nhau của phiên bản ứng dụng bằng chủ đề FCM.

Sau khi hoàn tất, bạn sẽ có thể tận dụng cơ sở hạ tầng FCM để quản lý các nhóm con này cũng như các thông báo đẩy đa hướng trên các nhóm con.

Tổng quan về chủ đề

Chủ đề là một cách được hỗ trợ bởi cơ sở hạ tầng FCM để tiếp cận các nhóm con của phiên bản ứng dụng của bạn bằng tin nhắn.

FCM cung cấp các API để gửi tin nhắn cũng như duy trì đăng ký cho các chủ đề này. Hành động liên kết và tách một phiên bản ứng dụng với chủ đề được gọi tương ứng là đăng ký và hủy đăng ký

Các chủ đề nên được sử dụng cho nội dung có sẵn công khai. Ví dụ: tin nhắn về cập nhật thời tiết. Nếu bạn muốn gửi tin nhắn nhạy cảm với người dùng, hãy sử dụng SDK quản trị Firebase để gửi tin nhắn đa hướng trên nhiều thiết bị .

Tính năng phát đa hướng dựa trên chủ đề được tối ưu hóa cho thông lượng.

Bạn sẽ học được gì

  • Cách đăng ký (và hủy đăng ký) người dùng các chủ đề từ ứng dụng dành cho thiết bị di động.
  • Cách gửi tin nhắn đẩy multicast bằng cách sử dụng các chủ đề.
  • Cách gửi tin nhắn đến một tổ hợp các chủ đề bằng cách sử dụng điều kiện chủ đề.
  • Cách quản lý đăng ký chủ đề ở phía máy chủ và thực hiện đăng ký và hủy đăng ký hàng loạt.

Những gì bạn sẽ xây dựng

  • Ứng dụng Android đăng ký/hủy đăng ký các chủ đề và nhận tin nhắn khi được gửi đến các chủ đề.
  • Tích hợp phía máy chủ sử dụng SDK quản trị Firebase, SDK này sẽ được dùng để gửi thông báo chủ đề qua API FCM.

Những gì bạn cần

  • Trình duyệt bạn chọn, chẳng hạn như Chrome.
  • IntelliJ IDEA IDE để phát triển các ứng dụng Java.
    • Đảm bảo chọn tham gia hỗ trợ cho Gradle trong khi cài đặt.
  • Android Studio IDE để phát triển ứng dụng Android.
  • Một thiết bị để chạy ứng dụng Android. Một trong hai:
    • Trình giả lập Android. (Yêu cầu thiết lập trong Android Studio ).
    • Một thiết bị Android vật lý được kết nối với máy tính của bạn và được đặt ở chế độ nhà phát triển.
  • Tài khoản Google để tạo và quản lý dự án Firebase của bạn.

2. Bắt đầu thiết lập

Lấy mã

Sao chép kho GitHub từ dòng lệnh:

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

Mã mẫu sẽ được sao chép vào thư mục fcm-codelab .

cd fcm-codelab

Ứng dụng khởi đầu cho lớp học lập trình này nằm trong thư mục messaging của nhánh fcm-topics-codelab . Thực hiện các bước sau để lấy mã khởi đầu. Nó chứa hai thư mục StockNewsAppStockNewsServer . Cái trước chứa Ứng dụng Android khởi động và cái sau có mã phía máy chủ khởi động.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

Phiên bản hoàn chỉnh của lớp học lập trình này được đặt trong thư mục messaging/fcm-topics-codelab/completed .

Tạo dự án Firebase

  1. Trong bảng điều khiển Firebase , hãy nhấp vào Thêm dự án , đặt tên cho dự án Firebase là StockNews và nhấp vào tiếp tục. Lưu ý: Hãy nhớ ID dự án cho dự án Firebase của bạn (hoặc nhấp vào biểu tượng Chỉnh sửa để đặt ID dự án ưa thích của bạn).

fc08f9a7808e4553.png

  1. Bạn có thể bỏ qua việc bật Google Analytics. Vì mục đích của lớp học lập trình này, bạn không cần nó. Nhấp vào Tiếp tục.
  2. Nhấp vào Tạo dự án .

Chúc mừng! Bạn vừa tạo dự án Firebase của mình. Bây giờ, bạn có thể nhấp vào tên dự án để vào bảng điều khiển.

3. Cấu hình ứng dụng Firebase dành riêng cho nền tảng

Hầu hết các thay đổi mã cần thiết để kích hoạt hỗ trợ Firebase đều đã được kiểm tra trong dự án bạn đang thực hiện. Tuy nhiên, để thêm hỗ trợ cho nền tảng di động, bạn cần:

  • Đăng ký nền tảng mong muốn trên dự án Firebase
  • Tải xuống tệp cấu hình dành riêng cho nền tảng và thêm nó vào mã.

Vì mục đích của lớp học lập trình này, chúng tôi sẽ thêm ứng dụng Android Firebase.

84e0b3199bef6d8a.png Định cấu hình Android

  1. Trong Bảng điều khiển Firebase , chọn Cài đặt dự án ở đầu thanh điều hướng bên trái trong bánh răng Cài đặt và nhấp vào biểu tượng Android trong Ứng dụng của bạn trong trang Chung .

Bạn sẽ thấy hộp thoại sau: 8254fc299e82f528.png

  1. Giá trị quan trọng cần cung cấp là tên gói Android . Đặt nó thành com.ticker.stocknews .
    1. Tên gói được cung cấp ở đây phải giống với tên được cung cấp trong AndroidManifest.xml của mã StockNewsApp ban đầu của bạn. Nếu bạn muốn định vị hoặc thay đổi nó, hãy làm theo các bước sau:
      1. Trong thư mục StockNewsApp , hãy mở tệp app/src/main/AndroidManifest.xml .
      2. Trong phần tử manifest , tìm giá trị chuỗi của thuộc tính package . Giá trị này là tên gói Android.
  1. Trong hộp thoại Firebase, dán tên gói đã sao chép vào trường tên gói Android .
  2. Bạn không cần chứng chỉ ký gỡ lỗi SHA-1 cho lớp học lập trình này vì ứng dụng này sẽ không được phát hành. Để trống phần này.
  3. Nhấp vào Đăng ký ứng dụng .
  4. Tiếp tục trong Bảng điều khiển Firebase, hãy làm theo hướng dẫn để tải xuống tệp cấu hình google-services.json .
  5. Bạn có thể bỏ qua các bước thiết lập còn lại vì mọi thứ khác đã được định cấu hình trong mã ứng dụng ban đầu. Bạn sẽ thấy ứng dụng của mình được liệt kê trên trang chính của Bảng điều khiển Firebase.
  6. Sao chép tệp google-services.json (mà bạn vừa tải xuống) vào thư mục messaging/fcm-topics-codelab/starter/StockNewsApp/app .

4. Xây dựng và chạy ứng dụng của bạn

Bạn đã sẵn sàng để thực sự bắt đầu làm việc trên ứng dụng của mình! Đầu tiên, xây dựng và chạy ứng dụng.

Nhập ứng dụng khởi đầu

Khởi động Android Studio và nhập messaging/fcm-topics-codelab/starter/StockNewsApp từ thư mục mã khởi động.

Sau khi dự án được tải, bạn cũng có thể thấy cảnh báo rằng Git không theo dõi tất cả các thay đổi cục bộ của bạn, bạn có thể nhấp vào " Bỏ qua " hoặc dấu " X " ở phía trên bên phải. (Bạn sẽ không đẩy bất kỳ thay đổi nào trở lại kho Git.)

Ở góc trên bên trái của cửa sổ dự án, bạn sẽ thấy nội dung giống như hình ảnh bên dưới nếu bạn đang ở chế độ xem Android . (Nếu bạn đang ở chế độ xem Dự án , bạn sẽ cần mở rộng dự án để thấy điều tương tự)

b574ea0089ee87c6.png

Xin lưu ý rằng Android Studio có thể mất vài giây để biên dịch dự án ở chế độ nền lần đầu tiên. Trong thời gian này, bạn sẽ thấy một vòng quay trên thanh trạng thái ở cuối Android Studio:

4bc64eb3b99eb0ae.png

Chúng tôi khuyên bạn nên đợi cho đến khi quá trình này hoàn tất trước khi thực hiện thay đổi mã. Điều này sẽ cho phép Android Studio có được tất cả các thành phần cần thiết.

Ngoài ra, nếu bạn nhận được lời nhắc "Tải lại để thay đổi ngôn ngữ có hiệu lực?" hoặc điều gì đó tương tự, chọn "Có".

Thiết lập trình giả lập

Nếu bạn cần trợ giúp thiết lập trình mô phỏng Android, hãy tham khảo bài viết Chạy ứng dụng của bạn .

Hiểu mã khởi động ứng dụng Android

  • Mã khởi đầu là một Ứng dụng Android nhẹ với chức năng và giao diện người dùng tối thiểu.
  • Phần phụ thuộc của SDK nhắn tin firebase đã được thêm vào tệp app/build.gradle .

f04ff8f48d186dff.png

  • Trong AndroidManifest.xml , trình xử lý gọi lại MESSAGING_EVENT đã được thêm vào.
    • Trình xử lý này, StockNewsMessagingService.java mở rộng lớp FirebaseMessagingService cung cấp nhiều chức năng liên quan đến Nhắn tin qua đám mây của Firebase. Xem tài liệu FirebaseMessagingService để tìm hiểu thêm. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • Hàm onNewToken được gọi khi Mã thông báo đăng ký FCM được tạo hoặc làm mới. Xem Giám sát việc tạo mã thông báo để biết thêm thông tin.
    • Hàm onMessageReceived được gọi khi nhận được tin nhắn và ứng dụng ở chế độ nền trước. Hiện tại, nó chỉ ghi lại tin nhắn đã nhận.
  • Ngoài ra, trong AndroidManifest.xml , một lớp Application Android cũng được cung cấp có tên StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Lớp này sẽ là lớp đầu tiên được khởi tạo khi Ứng dụng khởi động.
    • Trong chức năng onCreate của lớp StockNewsApplication , lệnh gọi tạo Mã thông báo đăng ký FCM được thêm vào. Nó sẽ tạo Mã thông báo đăng ký FCM hợp lệ và ghi lại nó.
  • MainActivity.java thêm RecyclerView hiển thị các lựa chọn Danh mục chứng khoán.
  • SubscriptionAdapter.java triển khai RecyclerView.Adapter để vẽ màn hình lựa chọn Danh mục chứng khoán.
    • Mỗi Danh mục chứng khoán có một tên và nút chuyển đổi đăng ký bên cạnh nó.
    • Việc thay đổi nút chuyển đổi sẽ thực hiện cuộc gọi đăng ký/hủy đăng ký chủ đề FCM.
    • Bạn sẽ triển khai các lệnh gọi này trong các phần sắp tới.
  • Lớp model/StockCategories.java chứa danh sách tất cả Danh mục chứng khoán và tên chủ đề liên quan của chúng.

b32663ec4e865a18.png

Chạy ứng dụng khởi động

  1. Kết nối thiết bị Android của bạn với máy tính hoặc khởi động trình mô phỏng.
  2. Trong thanh công cụ trên cùng, chọn thiết bị hoặc trình mô phỏng Android mục tiêu của bạn và nhấn nút chạy.

5b27fc5b237e06b9.png

  1. Giao diện người dùng ứng dụng sẽ trông như sau:

ff5b1a1c53231c54.png

  1. Ứng dụng sẽ tạo Mã thông báo đăng ký FCM và đăng nhập nó. Tuy nhiên sẽ không có gì thay đổi trong Giao diện người dùng ứng dụng.
    1. Sao chép và lưu Mã thông báo đăng ký FCM vì nó sẽ được sử dụng trong các bước tiếp theo.

927eb66bc909f36b.png

5. Gửi tin nhắn kiểm tra

Bây giờ bạn đã sẵn sàng gửi tin nhắn thử nghiệm đến phiên bản ứng dụng mà bạn đã thiết lập ở bước trước.

Nhập mã máy chủ khởi động

Khởi động IntelliJ IDEA và mở dự án messaging/fcm-topics-codelab/starter/StockNewsServer .

Chế độ xem dự án trong thanh điều hướng bên trái của bạn sẽ trông giống như thế này:

da20711f6527dff6.png

Lưu ý, có thể mất vài phút để IntellIj IDEA xây dựng dự án của bạn, bao gồm cả việc lấy các phần phụ thuộc cần thiết.

Hiểu mã khởi động máy chủ

  • Mã khởi động máy chủ là một dự án Java dựa trên Gradle.
  • Tệp build.gradle đã được thêm phần phụ thuộc vào SDK firebase-admin . SDK này cung cấp quyền truy cập vào các chức năng gửi tin nhắn FCM khác nhau.

650fc733298588f8.png

  • Cuối cùng, có hai lớp, viz:
    • FcmSender.java : Lớp này chứa các phương thức lưu ý sau:
      • initFirebaseSDK : Khởi tạo SDK quản trị firebase.
      • sendMessageToFcmRegistrationToken : gửi tin nhắn đến Mã thông báo đăng ký FCM.
      • sendMessageToFcmTopic : gửi tin nhắn đến chủ đề FCM.
      • sendMessageToFcmTopicCondition : gửi tin nhắn đến điều kiện chủ đề FCM.
    • FcmSubscriptionManager.java : Lớp này chứa các phương thức cho phép quản lý đăng ký chủ đề từ phía máy chủ.
      • initFirebaseSDK : Khởi tạo SDK quản trị firebase.
      • subscribeFcmRegistrationTokensToTopic : đăng ký (các) Mã thông báo đăng ký FCM cho một chủ đề FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : hủy đăng ký (các) Mã thông báo đăng ký FCM khỏi một chủ đề FCM.

Thiết lập mã máy chủ

  1. Trước tiên, chúng ta cần thiết lập Tài khoản dịch vụ Firebase cho phép SDK quản trị firebase ủy quyền các lệnh gọi tới API FCM.
    1. Đi tới Bảng điều khiển Firebase, nhấp vào biểu tượng bánh răng bên cạnh Tổng quan dự án ở thanh điều hướng bên trái và chọn Cài đặt dự án . 8c2108d4d7c915e9.png
    2. Trong trang cài đặt, chọn Tài khoản dịch vụ và nhấp vào Tạo tài khoản dịch vụ . 84b128cc5dac0a85.png
    3. Bây giờ hãy nhấp vào nút Tạo khóa riêng mới và quá trình tải xuống tự động tệp khóa của bạn sẽ bắt đầu.
    4. Đổi tên tệp khóa thành service-account.json và sao chép nó vào thư mục messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources .
    5. Cả FcmSender.javaFcmSubscriptionManager.java đều tải tệp service-account.json từ đường dẫn lớp bằng mã sau. 8dffbee658e0bdd.png
  2. Tại thời điểm này, mã máy chủ đã sẵn sàng. Chạy Build -> Build Project từ thanh menu trên cùng.

Gửi tin nhắn thử nghiệm

  1. Trong FcmSender.java , tìm hàm sendMessageToFcmRegistrationToken và chèn mã thông báo đăng ký FCM mà bạn đã sao chép từ phần Chạy ứng dụng khởi động vào trường registrationToken .
  2. Trong hàm main , chỉ bỏ ghi chú hàm sendMessageToFcmRegistrationToken và nhấp vào chạy để thực thi mã.
    1. Quan sát cách Mã thông báo đăng ký FCM được đặt vào trường Token của đối tượng message .
    2. Hơn nữa, hãy chú ý cách chúng tôi đã sử dụng API send của giao diện FirebaseMessaging .

52e4a3ec3f816473.png

  1. Thao tác này sẽ gửi một thông báo đến phiên bản ứng dụng mà bạn đã thiết lập ở bước trước.
  2. Khi phiên bản ứng dụng ở nền trước, bạn sẽ thấy nội dung thông báo được ghi lại.

d3540ec1089f97dd.png

  1. Và khi phiên bản Ứng dụng ở chế độ nền, bạn sẽ thấy thông báo xuất hiện trong khay thông báo.

31203deca59c03fe.png

Tuyệt vời, bạn đã sử dụng SDK quản trị Firebase để gửi tin nhắn đến một phiên bản ứng dụng. Đọc thêm về cách sử dụng SDK quản trị Firebase trong máy chủ của bạn .

6. Thực hiện đăng ký/hủy đăng ký chủ đề

Trong bước này, bạn sẽ triển khai các hành động đăng ký và hủy đăng ký chủ đề trên nút chuyển đổi Danh mục chứng khoán của Ứng dụng Android.

Khi người dùng Ứng dụng bật công tắc cho một Danh mục chứng khoán cụ thể, cuộc gọi đăng ký chủ đề hoặc hủy đăng ký sẽ được thực hiện.

Xem lại mã

  • Điều hướng đến lớp SubscriptionAdapter.java trong mã Ứng dụng Android và tìm lớp RecyclerViewViewHolder .

6c0614199e684f6.png

  • Trình xây dựng lớp thiết lập trình xử lý cho việc chuyển đổi đăng ký bằng cách sử dụng setOnCheckedChangeListener .
  • Tùy thuộc vào nút chuyển đổi, các hành động đăng ký và hủy đăng ký được thực hiện bằng cách gọi các phương thức subscribeToStockCategoryunsubscribeFromStockCategory tương ứng.
  • Phương thức setData được gọi bởi onBindViewHolder của RecyclerView Adapter để liên kết ViewHolder với Danh mục chứng khoán thích hợp.

Triển khai đăng ký chủ đề

  1. Trong phương thức subscribeToStockCategory , bạn sẽ triển khai lệnh gọi API subscribeToTopic của đối tượng FirebaseMessaging . Mã có thể trông giống như thế này:
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Thực hiện hủy đăng ký chủ đề

  1. Tương tự, trong điều kiện else, bạn sẽ triển khai lệnh gọi API unsubscribeFromTopic . Một cái gì đó dọc theo dòng sau:
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Hãy thử nó

  1. Chạy Ứng dụng và chuyển đổi các tùy chọn Danh mục chứng khoán để thực hiện hành động Đăng ký và Hủy đăng ký. Nó sẽ trông giống như thế này:

Đặt mua

Hủy đăng ký

7. Gửi tin nhắn chủ đề đầu tiên của bạn

Trong bước này, bạn sẽ triển khai mã phía máy chủ để gửi thông báo chủ đề FCM.

Triển khai tích hợp phía máy chủ để gửi tin nhắn chủ đề

  1. Trong mã máy chủ, hãy truy cập FcmSender.java và tìm phương thức có tên sendMessageToFcmTopic .

56381dd1b40cde9c.png

  1. Ở dòng đầu tiên, hãy cung cấp Chủ đề FCM mà bạn muốn gửi tin nhắn đến.
    • Đó là một chuỗi có dạng: /topics/<Topic Name> . Ví dụ: /topics/Technology .
  2. Trong các dòng tiếp theo, hãy tạo một đối tượng message mới (tương tự như đối tượng được xác định trong hàm sendMessageToFcmRegistrationToken ).
    • Sự khác biệt sẽ là thay vì đặt trường Token của đối tượng message , bạn sẽ đặt trường Topic .
Message message = Message.builder()
        .putData("FOOTECH", "$1000")
        .setNotification(
            Notification.builder()
                .setTitle("Investor confidence in Tech Stocks growing")
                .setBody("Foo Tech leading the way in stock growth for Tech sector.")
                .build())
        .setTopic(topicName)
        .build();
  1. Bây giờ, hãy thêm lệnh gọi vào phiên bản FirebaseMessaging để gửi tin nhắn (giống hệt với lệnh gọi gửi được thực hiện trong hàm sendMessageToFcmRegistrationToken ).
FirebaseMessaging.getInstance().send(message);
  1. Cuối cùng, cập nhật hàm main và chỉ cho phép lệnh gọi hàm sendMessageToFcmTopic .

9a6aa08dd7c28898.png

Gửi tin nhắn và xác nhận đã nhận

  1. Trước khi gửi tin nhắn chủ đề, trước tiên hãy đảm bảo rằng phiên bản ứng dụng của bạn đã đăng ký chủ đề bạn muốn gửi tới.
    1. Điều này có thể được thực hiện bằng cách lật nút chuyển đổi tương ứng. Ví dụ:
    4668247408377712.png
  2. Bây giờ bạn có thể gửi tin nhắn chủ đề của mình bằng cách thực thi chức năng main của FcmSender.java .
  3. Giống như trước đây, bạn có thể quan sát việc nhận tin nhắn trên phiên bản ứng dụng.
    1. Phiên bản ứng dụng ở nền trước
    c144721399f610fe.png
    1. Phiên bản ứng dụng ở chế độ nền
    44efc7dfd57e8e9a.png
  4. Phần thưởng: Hãy thử hủy đăng ký chủ đề bạn đã gửi và gửi lại tin nhắn. Bạn sẽ quan sát thấy tin nhắn không được gửi đến phiên bản ứng dụng.

8. Gửi tin nhắn điều kiện chủ đề đầu tiên của bạn

Tính năng điều kiện chủ đề cho phép bạn gửi tin nhắn đến sự kết hợp của các chủ đề cho phép bạn cung cấp định nghĩa về đối tượng mang tính biểu cảm hơn.

Ví dụ: trong Ứng dụng StockNews của chúng tôi, hãy xem xét khả năng gửi tin nhắn đến một nhóm phiên bản ứng dụng đã đăng ký chủ đề Công nghệ hoặc Ô tô. Ví dụ: trường hợp như vậy có thể xảy ra nếu có một sự kiện đáng chú ý liên quan đến Waymo.

Các chủ đề cho phép bạn thể hiện sự kết hợp của mình dưới dạng biểu thức boolean bằng cách sử dụng các toán tử sau

  • && : Logic VÀ. Ví dụ: 'Technology' in topics && 'Automotive' in topics - Chỉ nhắm mục tiêu các phiên bản ứng dụng đã đăng ký cả Chủ đề Công nghệ và Ô tô.
  • || : Logic HOẶC. Ví dụ: 'Technology' in topics || 'Automotive' in topics - Nhắm mục tiêu các phiên bản ứng dụng được đăng ký theo chủ đề Công nghệ hoặc Ô tô.
  • (): Dấu ngoặc đơn để nhóm. Ví dụ: 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - Chỉ nhắm mục tiêu các phiên bản ứng dụng đã đăng ký chủ đề Công nghệ và Ô tô hoặc Năng lượng.

Đọc thêm về cách tạo yêu cầu gửi để sử dụng chức năng này.

Triển khai tích hợp phía máy chủ để gửi thông báo điều kiện chủ đề

  1. Quay lại mã máy chủ, nhảy vào FcmSender.java và tìm phương thức có tên sendMessageToFcmTopicCondition .

3719a86c274522cf.png

  1. Ở dòng đầu tiên, đối với biến topicCondition , hãy cung cấp điều kiện về chủ đề mà bạn muốn gửi tin nhắn đến. Bạn có thể đặt thành: 'Technology' in topics && 'Automotive' in topics .
  2. Trong các dòng tiếp theo, hãy tạo một đối tượng message mới (tương tự như đối tượng được xác định trong hàm sendMessageToFcmTopic ).
    1. Sự khác biệt sẽ là thay vì đặt trường Topic của đối tượng, bạn sẽ đặt trường Condition .
    Message message = Message.builder()
        .putData("FOOCAR", "$500")
        .setNotification(
            Notification.builder()
                .setTitle("Foo Car shows strong Q2 results")
                .setBody("Foo Car crosses 1B miles. Stocks rally.")
                .build())
        .setCondition(topicCondition)
        .build();
  1. Bây giờ, hãy thêm lệnh gọi vào phiên bản FirebaseMessaging để gửi tin nhắn (giống hệt với lệnh gọi gửi được thực hiện trong hàm sendMessageToFcmTopic ).
FirebaseMessaging.getInstance().send(message);
  1. Cuối cùng, cập nhật hàm main và chỉ cho phép lệnh gọi hàm sendMessageToFcmTopicCondition .

db9588d40d2a0da6.png

Gửi tin nhắn và xác nhận đã nhận

  1. Trước khi gửi thông báo chủ đề, trước tiên hãy đảm bảo rằng phiên bản ứng dụng của bạn đáp ứng điều kiện chủ đề đã chỉ định bằng cách đăng ký phiên bản ứng dụng đó cho cả chủ đề Công nghệ và Ô tô.
  2. Bây giờ bạn có thể gửi tin nhắn chủ đề của mình bằng cách thực thi chức năng main của FcmSender.java .
  3. Giống như trước đây, bạn có thể quan sát quá trình nhận tin nhắn trên phiên bản ứng dụng.
    1. Phiên bản ứng dụng ở nền trước
    6f612ace15aa6515.png
    1. Phiên bản ứng dụng ở chế độ nền
    78044a56ac2359cb.png
  4. Phần thưởng: Bây giờ bạn có thể hủy đăng ký chủ đề Công nghệ và gửi lại thông báo điều kiện chủ đề. Bạn nên quan sát rằng phiên bản ứng dụng không nhận được tin nhắn.

9. Tóm tắt

Chúng ta hãy tóm tắt nhanh những gì bạn đã học được cho đến thời điểm này.

  • Cách bắt đầu đăng ký chủ đề/hủy đăng ký từ một phiên bản ứng dụng.
  • Gửi tin nhắn đến chủ đề và xác minh việc nhận trên các phiên bản ứng dụng đã đăng ký.
  • Gửi tin nhắn đến một chủ đề Điều kiện và xác minh việc nhận trên một phiên bản ứng dụng thỏa mãn điều kiện.

Trong phần tiếp theo, bạn sẽ tìm hiểu về cách có thể đăng ký/hủy đăng ký các phiên bản ứng dụng theo chủ đề mà không cần thực hiện lệnh gọi từ phía máy khách.

c0dc20655d392690.gif

10. Quản lý đăng ký chủ đề từ phía máy chủ

Cho đến thời điểm hiện tại, trong lớp học lập trình này, tất cả lệnh gọi đăng ký chủ đề và hủy đăng ký đều được bắt đầu từ một phiên bản ứng dụng.

Tuy nhiên, trong một số trường hợp sử dụng, bạn có thể muốn quản lý đăng ký chủ đề từ Phía máy chủ. Ví dụ: bạn có thể muốn đăng ký một nhóm con trong cơ sở người dùng hiện tại của mình về một chủ đề mới mà không cần chờ triển khai ứng dụng.

Trong phần này, bạn sẽ tìm hiểu cách sử dụng SDK quản trị Firebase để đăng ký và hủy đăng ký một loạt Mã thông báo đăng ký FCM cho một chủ đề bằng cách thực hiện lệnh gọi từ phía máy chủ.

Triển khai đăng ký phía máy chủ Mã thông báo đăng ký FCM cho chủ đề FCM

  1. Trong mã máy chủ, chuyển sang lớp FcmSubscriptionManager.java . Xác định vị trí phương thức có tên subscribeFcmRegistrationTokensToTopic . Bạn sẽ thực hiện lệnh gọi API subscribeToTopic tại đây.

5d5709e7b3cbcb04.png

  1. Hãy đăng ký phiên bản ứng dụng theo chủ đề Năng lượng. Để làm điều đó, trước tiên hãy cung cấp dữ liệu cho hai trường sau:
    1. registrationTokens : danh sách các chuỗi được phân tách bằng dấu phẩy đại diện cho Mã thông báo đăng ký FCM mà bạn muốn tạo đăng ký chủ đề.
    2. topicName : tên chủ đề cho chủ đề Năng lượng, tức là /topics/Energy .
  2. Trong một số dòng tiếp theo, hãy triển khai lệnh gọi, dọc theo các dòng sau:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Bạn có thể kiểm tra TopicManagementResponse để biết một số thống kê kết quả cấp cao. Chẳng hạn như in số lượng đăng ký chủ đề được tạo thành công bằng getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Cuối cùng, trong hàm main chỉ cho phép gọi hàm subscribeFcmRegistrationTokensToTopic .

Tạo đăng ký và gửi tin nhắn chủ đề

  1. Tại thời điểm này, bạn đã sẵn sàng tạo chủ đề đăng ký và gửi tin nhắn đến chủ đề đó.
  2. Thực thi chức năng main của lớp FcmSubscriptionManager.java . Điều này sẽ tạo ra một đăng ký chủ đề.
  3. Bây giờ, hãy thiết lập mã để gửi tin nhắn. Tương tự như trước đây,
    1. Trong FcmSender.java , tìm hàm sendMessageToFcmTopic .
    2. Đặt topicName thành chủ đề Năng lượng, tức là /topics/Energy .
    3. Tạo một đối tượng Message và nhắm mục tiêu nó đến chủ đề bằng cách sử dụng setTopic .
    4. Cuối cùng, cập nhật phương thức main để chỉ kích hoạt hàm sendMessageToFcmTopic .
  4. Thực thi chức năng main của FcmSender.java . Thao tác này sẽ gửi thông báo đến phiên bản ứng dụng của bạn và bạn có thể quan sát thông báo trong ứng dụng của mình như sau.
    1. Phiên bản ứng dụng ở nền trước
    40ab6cf71e0e4116.png
    1. Phiên bản ứng dụng ở chế độ nền
    8fba81037198209e.png

Triển khai việc hủy đăng ký Mã thông báo đăng ký FCM phía máy chủ cho chủ đề FCM

  1. Đối với việc hủy đăng ký chủ đề phía máy chủ, hãy sử dụng API unsubscribeFromTopic này. Bạn sẽ thêm mã liên quan vào hàm unsubscribeFcmRegistrationTokensFromTopic của lớp FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

  1. Việc triển khai mã hủy đăng ký phía máy chủ và xác thực tác dụng của nó bằng cách gửi tin nhắn chủ đề được coi là một bài tập dành cho bạn.

11. Xin chúc mừng

Xin chúc mừng, bạn đã sử dụng thành công các chủ đề FCM để gửi tin nhắn multicast đến các nhóm con của phiên bản ứng dụng của mình. Điều này sẽ giúp đơn giản hóa khả năng tiếp cận kịp thời người dùng của bạn bằng nội dung có liên quan.

947def3eb33b1e4a.gif

Cái gì tiếp theo?

Bây giờ bạn đã hoàn thành lớp học lập trình, hãy cân nhắc việc thử các chủ đề cho các nền tảng khác bằng cách làm theo hướng dẫn sau:

Tài liệu tham khảo