1. Giới thiệu
Mục tiêu
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách đo lường ứng dụng đa nền tảng để có thể sử dụng chủ đề FCM để truyền nhiều thông báo đẩy đến các nhóm con của các phiên bản ứng dụng khác nhau.
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ư thông báo đẩy đa hướng qua các nhóm con.
Tổng quan về chủ đề
Chủ đề là một cách thức được cơ sở hạ tầng FCM hỗ trợ để tiếp cận các nhóm con của các phiên bản ứng dụng bằng tin nhắn.
FCM cung cấp các API để gửi thông báo cũng như duy trì việc đăng ký các chủ đề này. Hành động liên kết và phân tách một thực thể ứng dụng với một chủ đề tương ứng được gọi là đăng ký và huỷ đăng ký
Bạn nên dùng chủ đề cho nội dung công khai. Ví dụ: thông báo cập nhật thông tin về thời tiết. Nếu bạn muốn gửi thông báo nhạy cảm với người dùng, hãy sử dụng SDK quản trị của Firebase để phát nhiều thông báo qua nhiều thiết bị.
Tính năng phát đa hướng dựa trên chủ đề được tối ưu hoá cho thông lượng.
Kiến thức bạn sẽ học được
- Cách đăng ký (và huỷ đăng ký) người dùng theo dõi chủ đề trong ứng dụng di động.
- Cách gửi thông báo đẩy nhiều hướng bằng chủ đề.
- Cách gửi thông báo cho một tổ hợp chủ đề bằng các điều kiện về chủ đề.
- Cách quản lý các gói thuê bao chủ đề ở phía máy chủ, cũng như tiến hành đăng ký và huỷ đăng ký hàng loạt.
Sản phẩm bạn sẽ tạo ra
- Ứng dụng Android đăng ký/huỷ đăng ký theo dõi các chủ đề và nhận thông báo khi được gửi đến các chủ đề.
- Tích hợp phía máy chủ bằng cách sử dụng SDK quản trị của Firebase. SDK này sẽ được dùng để gửi các thông báo về chủ đề qua API FCM.
Bạn cần có
- Một trình duyệt bạn chọn, chẳng hạn như Chrome.
- IDE IntelliJ IDEA để phát triển các ứng dụng Java.
- Hãy nhớ chọn sử dụng tính năng hỗ trợ Gradle trong khi cài đặt.
- IDE Android Studio dùng để phát triển các ứng dụng Android.
- Thiết bị để chạy ứng dụng Android. Một trong hai trường hợp sau:
- Trình mô phỏng Android. (Yêu cầu thiết lập trong Android Studio).
- Một thiết bị Android thự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.
2. Thiết lập
Lấy mã nguồn
Sao chép kho lưu trữ 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
. Hãy làm theo các bước sau để truy cập vào mã khởi đầu. Tệp này chứa hai thư mục StockNewsApp
và StockNewsServer
. Phần trước chứa ứng dụng Android khởi đầu và phần sau có mã phía máy chủ khởi đầu.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
Phiên bản đã hoàn tất của lớp học lập trình này sẽ được đặt trong thư mục messaging/fcm-topics-codelab/completed
.
Tạo một dự án Firebase
- Trong bảng điều khiển của Firebase, hãy nhấp vào Thêm dự án, đặt tên cho dự án Firebase đó là stockNews rồi nhấp vào tiếp tục. Lưu ý: Hãy ghi nhớ Mã 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 Mã dự án mà bạn muốn).
- Bạn có thể bỏ qua bước bật Google Analytics. Để phục 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.
- Nhấp vào Tạo dự án.
Xin 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 để truy cập vào bảng điều khiển.
3. Cấu hình ứng dụng Firebase theo nền tảng cụ thể
Hầu hết các thay đổi về mã cần thiết để bật tính năng hỗ trợ Firebase đều đã được kiểm tra trong dự án bạn đang thực hiện. Tuy nhiên, để thêm tính năng 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 tệp cấu hình dành riêng cho nền tảng xuống rồi thêm tệp đó vào mã.
Đối với mục đích của lớp học lập trình này, chúng ta sẽ thêm ứng dụng Android trong Firebase.
Định cấu hình Android
- Trong Bảng điều khiển của Firebase, hãy chọn phần Cài đặt dự án ở trên cùng của thanh điều hướng bên trái trong bánh răng Cài đặt, rồi nhấp vào biểu tượng Android trong phần Ứng dụng của bạn trên trang Chung.
Bạn sẽ thấy hộp thoại sau :
- Giá trị quan trọng cần cung cấp là tên gói Android. Đặt thành
com.ticker.stocknews
.- 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ã khởi đầu khoNewsApp của bạn. Nếu bạn muốn tìm hoặc thay đổi vị trí, hãy làm theo các bước sau:- Trong thư mục stockNewsApp, hãy mở tệp
app/src/main/AndroidManifest.xml
. - Trong phần tử
manifest
, hãy tìm giá trị chuỗi của thuộc tínhpackage
. Giá trị này là tên gói Android.
- Trong thư mục stockNewsApp, hãy mở tệp
- Tên gói được cung cấp ở đây phải giống với tên được cung cấp trong
- Trong hộp thoại Firebase, hãy dán tên gói đã sao chép vào trường Tên gói Android.
- 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. Hãy để trống trường này.
- Nhấp vào Đăng ký ứng dụng.
- Tiếp tục trong Bảng điều khiển của Firebase, hãy làm theo hướng dẫn để tải tệp cấu hình
google-services.json
xuống. - Bạn có thể bỏ qua các bước thiết lập còn lại, vì mọi bước khác đã được định cấu hình trong mã ứng dụng khởi đầ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 của Firebase.
- Sao chép tệp
google-services.json
(mà bạn vừa tải xuống) vào thư mụcmessaging/fcm-topics-codelab/starter/StockNewsApp/app
.
4. Tạo bản dựng và chạy ứng dụng
Bạn đã sẵn sàng bắt đầu công việc trên ứng dụng của mình! Trước tiên, hãy tạo 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 đầu.
Sau khi dự án được tải, bạn cũng có thể thấy cảnh báo cho biết 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 "Ignore" (Bỏ qua) hoặc "X" ở phía trên bên phải. (Bạn sẽ không đẩy thay đổi nào trở lại kho lưu trữ Git.)
Ở góc trên bên trái cửa sổ dự án, bạn sẽ thấy nội dung tương tự như hình bên dưới nếu đang ở chế độ xem Android. (Nếu đang ở chế độ xem Project (Dự án), bạn cần mở rộng dự án để thấy được điều tương tự)
Xin lưu ý rằng trong lần đầu tiên, Android Studio có thể mất vài giây để biên dịch dự án ở chế độ nề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:
Bạn nên đợi cho đến khi quá trình này hoàn tất rồi mới thay đổi mã. Thao tác này sẽ cho phép Android Studio lấy tất 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 để các thay đổi về ngôn ngữ có hiệu lực?" hoặc nội dung tương tự, hãy chọn "Có".
Thiết lập trình mô phỏng
Nếu bạn cần trợ giúp về việc thiết lập trình mô phỏng Android, hãy tham khảo bài viết Chạy ứng dụng.
Tìm hiểu mã khởi đầu của ứng dụng Android
- Mã khởi đầu là một Ứng dụng Android gọn nhẹ, có giao diện người dùng và chức năng ở mức tối thiểu.
- Một phần phụ thuộc của firebase-Messaging SDK đã được thêm vào tệp
app/build.gradle
.
- Trong
AndroidManifest.xml
, một trình xử lý gọi lạiMESSAGING_EVENT
đã được thêm.- Trình xử lý này (
StockNewsMessagingService.java
) mở rộng lớpFirebaseMessagingService
, cung cấp nhiều chức năng liên quan đến Giải pháp gửi thông báo qua đám mây của Firebase. Xem tài liệu về FirebaseMessagingService để tìm hiểu thêm.
- Hàm
onNewToken
được gọi khi Mã thông báo đăng ký FCM được tạo hoặc làm mới. Hãy xem bài viết Theo dõi quá trình 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 đang chạy trên nền trước. Hiện tại, Chrome chỉ ghi lại tin nhắn đã nhận.- Xem bài viết Nhận thông báo trong ứng dụng Android để tìm hiểu thêm về sự khác biệt giữa tính năng gửi và xử lý tin nhắn ở chế độ nền và nền trước.
- Trình xử lý này (
- Ngoài ra, trong
AndroidManifest.xml
, một lớpApplication
của Android cũng được cung cấp có tên làStockNewsApplication
.- Lớp này sẽ là lớp đầu tiên được tạo thực thể khi Ứng dụng khởi động.
- Trong hàm
onCreate
của lớpStockNewsApplication
, lệnh gọi tạo Mã thông báo đăng ký FCM sẽ được thêm. Hệ thống sẽ tạo một Mã thông báo đăng ký FCM hợp lệ và ghi lại mã đó.
MainActivity.java
thêmRecyclerView
cho thấy các lựa chọn về Danh mục cổ phiếu.SubscriptionAdapter.java
triển khaiRecyclerView.Adapter
để vẽ màn hình lựa chọn Danh mục cổ phiếu.- Mỗi Danh mục chứng khoán đều có tên và nút bật/tắt gói thuê bao bên cạnh.
- Việc thay đổi nút bật/tắt sẽ thực hiện một cuộc gọi đăng ký/huỷ đăng ký theo 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 cổ phiếu và tên chủ đề có liên quan.
Chạy ứng dụng khởi đầu
- Kết nối thiết bị Android với máy tính hoặc khởi động trình mô phỏng.
- Trong thanh công cụ trên cùng, hãy chọn trình mô phỏng hoặc thiết bị Android mục tiêu rồi nhấn nút chạy.
- Giao diện người dùng của Ứng dụng sẽ có dạng như sau:
- Ứng dụng sẽ tạo một Mã thông báo đăng ký FCM và ghi nhật ký mã đó. Tuy nhiên, không có gì thay đổi trong giao diện người dùng của Ứng dụng.
- Sao chép và lưu Mã thông báo đăng ký FCM vì mã này sẽ được dùng trong các bước tiếp theo.
5. Gửi tin nhắn thử nghiệm
Bây giờ, bạn có thể gửi tin nhắn kiểm thử đế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 đầu
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 sẽ có dạng như sau:
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 kéo các phần phụ thuộc bắt buộc.
Tìm hiểu về mã khởi đầu của máy chủ
- Mã khởi đầu phía 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 quản trị của Firebase vào đó. SDK này cung cấp quyền truy cập vào nhiều chức năng gửi tin nhắn FCM.
- Cuối cùng, có hai lớp, ví dụ:
FcmSender.java
: Lớp này chứa các phương thức ghi chú sau:initFirebaseSDK
: Khởi chạy SDK quản trị của Firebase.sendMessageToFcmRegistrationToken
: gửi tin nhắn đến Mã thông báo đăng ký FCM.sendMessageToFcmTopic
: gửi tin nhắn đến một chủ đề FCM.sendMessageToFcmTopicCondition
: gửi tin nhắn đến một điều kiện của chủ đề FCM.
FcmSubscriptionManager.java
: Lớp này chứa các phương thức cho phép quản lý các gói đăng ký chủ đề từ phía máy chủ.initFirebaseSDK
: Khởi chạy SDK quản trị của Firebase.subscribeFcmRegistrationTokensToTopic
: đăng ký(các) Mã thông báo đăng ký FCM theo chủ đề FCM.unsubscribeFcmRegistrationTokensFromTopic
: huỷ đăng ký(các) Mã thông báo đăng ký FCM về chủ đề FCM.
Thiết lập mã máy chủ
- Trước tiên, chúng ta cần thiết lập một Tài khoản dịch vụ Firebase cho phép SDK quản trị của Firebase uỷ quyền lệnh gọi đến các API FCM.
- Truy cập vào Bảng điều khiển của Firebase, nhấp vào biểu tượng bánh răng bên cạnh mục Tổng quan về dự án trên thanh điều hướng bên trái rồi chọn Cài đặt dự án.
- Trên trang cài đặt, hãy chọn Tài khoản dịch vụ rồi nhấp vào Tạo tài khoản dịch vụ.
- Giờ hãy nhấp vào nút Tạo khoá cá nhân mới và quá trình tự động tải tệp khoá của bạn xuống sẽ bắt đầu.
- Đổi tên tệp khoá thành
service-account.json
rồi sao chép tệp đó vào thư mụcmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - Cả
FcmSender.java
vàFcmSubscriptionManager.java
đều tải tệpservice-account.json
qua classpath bằng đoạn mã sau.
- Lúc này, mã máy chủ đã sẵn sàng. Chạy bản dựng -> Tạo dự án qua thanh trình đơn trên cùng.
Gửi tin nhắn thử nghiệm
- Trong
FcmSender.java
, hãy tìm hàmsendMessageToFcmRegistrationToken
rồi chèn mã thông báo đăng ký FCM mà bạn đã sao chép trong phần Chạy ứng dụng khởi đầu vào trườngregistrationToken
. - Trong hàm
main
, chỉ bỏ nhận xét về hàmsendMessageToFcmRegistrationToken
rồi nhấp vào chạy để thực thi mã.- Quan sát cách đặt Mã thông báo đăng ký FCM vào trường
Token
của đối tượngmessage
. - Ngoài ra, hãy xem cách chúng tôi sử dụng API
send
của giao diệnFirebaseMessaging
.
- Quan sát cách đặt Mã thông báo đăng ký FCM vào trường
- Thao tác này sẽ gửi thông báo cho phiên bản ứng dụng mà bạn đã thiết lập ở bước trước.
- Khi thực thể ứng dụng chạy ở nền trước, bạn sẽ thấy nội dung thông báo được ghi lại.
- Và khi phiên bản Ứng dụng chạy ở chế độ nền, bạn sẽ thấy thông báo xuất hiện trong khay thông báo.
Tuyệt vời! Bạn đã sử dụng SDK quản trị của Firebase để gửi thông báo đến một phiên bản ứng dụng. Đọc thêm về cách sử dụng SDK quản trị của Firebase trong máy chủ của bạn.
6. Triển khai gói thuê bao / huỷ đăng ký chủ đề
Ở bước này, bạn sẽ triển khai các thao tác đăng ký chủ đề và huỷ đăng ký, trên nút bật/tắt Danh mục cổ phiếu của Ứng dụng Android.
Khi người dùng Ứng dụng bật/tắt nút chuyển cho một Danh mục cổ phiếu cụ thể, một cuộc gọi đăng ký chủ đề hoặc huỷ đăng ký sẽ được thực hiện.
Xem lại mã
- Chuyển đến lớp
SubscriptionAdapter.java
trong Mã ứng dụng Android rồi tìm lớpRecyclerViewViewHolder
.
- Hàm khởi tạo lớp thiết lập trình nghe cho nút bật/tắt gói thuê bao bằng cách sử dụng
setOnCheckedChangeListener
. - Tuỳ thuộc vào nút bật/tắt, các thao tác đăng ký và huỷ đăng ký sẽ được thực hiện bằng cách gọi các phương thức
subscribeToStockCategory
vàunsubscribeFromStockCategory
tương ứng. - Phương thức
setData
đượconBindViewHolder
của Bộ chuyển đổi RecyclerView gọi để liên kết ViewHolder với Danh mục cổ phiếu thích hợp.
Triển khai gói thuê bao chủ đề
- Trong phương thức
subscribeToStockCategory
, bạn sẽ triển khai lệnh gọi đến APIsubscribeToTopic
của đối tượngFirebaseMessaging
. Mã có thể có dạng như sau:
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(); }); }
Triển khai chức năng huỷ đăng ký chủ đề
- Tương tự, trong điều kiện else, bạn sẽ triển khai lệnh gọi đến API
unsubscribeFromTopic
. Nội dung dưới đây:
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ử xem!
- Chạy Ứng dụng và bật/tắt các tuỳ chọn Danh mục cổ phiếu để thực thi thao tác Đăng ký và Huỷ đăng ký. Mã sẽ có dạng như sau:
Đăng ký | Hủy đăng ký |
7. Đang 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 tin nhắn theo chủ đề FCM.
Triển khai quá trình tích hợp phía máy chủ để gửi thông báo chủ đề
- Trong mã máy chủ, hãy chuyển đến
FcmSender.java
rồi tìm phương thức có tênsendMessageToFcmTopic
.
- Trong dòng đầu tiên, cung cấp Chủ đề FCM mà bạn muốn gửi thông điệp đến.
- Đó là một chuỗi có dạng:
/topics/<Topic Name>
. Ví dụ:/topics/Technology
.
- Đó là một chuỗi có dạng:
- 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àmsendMessageToFcmRegistrationToken
).- Điểm khác biệt sẽ là thay vì đặt trường
Token
của đối tượngmessage
, bạn sẽ đặt trườngTopic
.
- Điểm khác biệt sẽ là thay vì đặt trường
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();
- Bây giờ, hãy thêm lệnh gọi vào thực thể
FirebaseMessaging
để gửi thông báo (giống với lệnh gọi gửi được thực hiện trong hàmsendMessageToFcmRegistrationToken
).
FirebaseMessaging.getInstance().send(message);
- Cuối cùng, hãy cập nhật hàm
main
và chỉ bật lệnh gọi tới hàmsendMessageToFcmTopic
.
Gửi tin nhắn và xác thực biên nhận
- 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 đã được đăng ký với chủ đề mà bạn muốn gửi tới.
- Bạn có thể thực hiện việc này bằng cách lật nút bật/tắt tương ứng. Ví dụ:
- Giờ đây, bạn có thể gửi tin nhắn theo chủ đề bằng cách thực thi hàm
main
củaFcmSender.java
. - Giống như trước đây, bạn có thể quan sát thông báo xác nhận tin nhắn trên phiên bản ứng dụng.
- Phiên bản ứng dụng ở nền trước
- Phiên bản ứng dụng trong nền
- Bật mí thêm cho bạn: Thử huỷ đăng ký chủ đề bạn đã gửi đến rồi gửi lại thư. Bạn sẽ thấy rằng thông báo không được gửi đến thực thể ứng dụng.
8. Gửi Thông báo về điều kiện chủ đề đầu tiên của bạn
Tính năng điều kiện về chủ đề giúp bạn gửi thông điệp đến một tổ hợp các chủ đề để đưa ra định nghĩa rõ ràng hơn về đối tượng.
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 Automotive. Những trường hợp như vậy có thể xảy ra, chẳng hạn như nếu có một sự kiện đáng chú ý liên quan đến Waymo.
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 AND. Ví dụ:
'Technology' in topics && 'Automotive' in topics
– Chỉ nhắm đến những phiên bản ứng dụng đã đăng ký cả Chủ đề công nghệ và Chủ đề ô tô. - || : Lôgic OR. Ví dụ:
'Technology' in topics || 'Automotive' in topics
– Nhắm đến các thực thể ứng dụng đăng ký 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 đến các phiên bản ứng dụng đã đăng ký theo dõi chủ đề Công nghệ và 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 hoạt động tích hợp phía máy chủ để gửi thông báo về điều kiện của chủ đề
- Quay lại mã máy chủ, chuyển đến
FcmSender.java
rồi tìm phương thức có tênsendMessageToFcmTopicCondition
.
- Trong 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 thông báo. Bạn có thể đặt thành:'Technology' in topics && 'Automotive' in topics
. - 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àmsendMessageToFcmTopic
).- Điểm khác biệt sẽ là thay vì đặt trường
Topic
của đối tượng, bạn sẽ đặt trườngCondition
.
- Điểm khác biệt sẽ là thay vì đặt trường
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();
- Bây giờ, hãy thêm lệnh gọi vào thực thể
FirebaseMessaging
để gửi thông báo (giống với lệnh gọi gửi được thực hiện trong hàmsendMessageToFcmTopic
).
FirebaseMessaging.getInstance().send(message);
- Cuối cùng, hãy cập nhật hàm
main
và chỉ bật lệnh gọi tới hàmsendMessageToFcmTopicCondition
.
Gửi tin nhắn và xác thực biên nhận
- 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 về chủ đề đã chỉ định bằng cách đăng ký phiên bản ứng dụng đó cho cả chủ đề Công nghệ và Ô tô.
- Giờ đây, bạn có thể gửi tin nhắn theo chủ đề bằng cách thực thi hàm
main
củaFcmSender.java
. - Giống như trước đây, bạn sẽ có thể quan sát thông báo xác nhận tin nhắn trong phiên bản ứng dụng.
- Phiên bản ứng dụng ở nền trước
- Phiên bản ứng dụng trong nền
- Thêm: Bây giờ bạn có thể hủy đăng ký khỏi chủ đề Công nghệ và gửi lại thư về điều kiện của chủ đề. Bạn sẽ thấy rằng thực thể ứng dụng không nhận được thông báo.
9. Tóm tắt
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ý khỏi một phiên bản ứng dụng.
- Gửi tin nhắn đến chủ đề và xác minh biên 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 biên nhận trong một phiên bản ứng dụng đáp ứng điều kiện đó.
Trong phần tiếp theo, bạn sẽ tìm hiểu về cách đăng ký / huỷ đăng ký các phiên bản ứng dụng theo các chủ đề mà không cần tạo thực thể lệnh gọi từ phía máy khách.
10. Quản lý các lượt đăng ký chủ đề từ phía máy chủ
Cho đến nay, trong lớp học lập trình này, tất cả lệnh gọi đăng ký chủ đề và huỷ đă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ể cần quản lý việc đăng ký chủ đề từ Phía máy chủ. Ví dụ: bạn có thể muốn đăng ký một nhóm con cơ sở người dùng hiện tại của mình theo chủ đề mới mà không cần chờ phát hành ứng dụng.
Trong phần này, bạn sẽ tìm hiểu cách sử dụng SDK quản trị của Firebase để đăng ký và huỷ đă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 gói thuê bao phía máy chủ của Mã thông báo đăng ký FCM cho chủ đề FCM
- Trong mã máy chủ, hãy chuyển đến lớp
FcmSubscriptionManager.java
. Tìm phương thức có tênsubscribeFcmRegistrationTokensToTopic
. Bạn sẽ triển khai lệnh gọi đến APIsubscribeToTopic
tại đây.
- Hãy đăng ký phiên bản ứng dụng này theo chủ đề Năng lượng. Để làm được điều đó, trước tiên, hãy cung cấp dữ liệu cho hai trường sau:
registrationTokens
: một 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 gói thuê bao chủ đề.topicName
: tên chủ đề của chủ đề Năng lượng, tức là/topics/Energy
.
- Trong vài dòng tiếp theo, hãy triển khai lệnh gọi theo các dòng sau:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Bạn có thể kiểm tra
TopicManagementResponse
để biết một số số liệu thống kê về kết quả cấp cao. Chẳng hạn như in số lượng gói thuê bao chủ đề được tạo thành công bằnggetSuccessCount
.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Cuối cùng, trong hàm
main
, chỉ cho phép gọi hàmsubscribeFcmRegistrationTokensToTopic
.
Tạo gói thuê bao và gửi thông báo theo chủ đề
- Tại thời điểm này, bạn có thể tạo đăng ký chủ đề và gửi tin nhắn tới đó.
- Thực thi hàm
main
của lớpFcmSubscriptionManager.java
. Thao tác này sẽ tạo một gói thuê bao chủ đề. - Bây giờ, hãy thiết lập mã để gửi tin nhắn. Tương tự như trước,
- Trong
FcmSender.java
, hãy tìm hàmsendMessageToFcmTopic
. - Đặt
topicName
thành chủ đề Năng lượng, tức là/topics/Energy
. - Tạo một đối tượng
Message
rồi nhắm mục tiêu đối tượng đó đến chủ đề bằngsetTopic
. - Cuối cùng, hãy cập nhật phương thức
main
để chỉ bật hàmsendMessageToFcmTopic
.
- Trong
- Thực thi hàm
main
củaFcmSender.java
. Thao tác này sẽ gửi thông báo đến thực thể ứng dụng và bạn có thể quan sát thông báo đó trong ứng dụng như sau.- Phiên bản ứng dụng ở nền trước
- Phiên bản ứng dụng trong nền
Triển khai phía máy chủ huỷ đăng ký Mã thông báo đăng ký FCM cho chủ đề FCM
- Để huỷ đăng ký chủ đề phía máy chủ, hãy sử dụng API
unsubscribeFromTopic
này. Bạn cần thêm mã liên quan vào hàmunsubscribeFcmRegistrationTokensFromTopic
của lớpFcmSubscriptionManager.java
.
- Việc triển khai mã huỷ đăng ký phía máy chủ và xác thực tác động của mã bằng cách gửi thông báo chủ đề, vẫn 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 thông báo phát đa hướng đến các nhóm con của các phiên bản ứng dụng của mình. Điều này sẽ giúp đơn giản hoá khả năng tiếp cận người dùng kịp thời bằng nội dung phù hợp.
Tiếp theo là gì?
Giờ đây, bạn đã hoàn thành lớp học lập trình, hãy cân nhắc thử nghiệm các chủ đề cho các nền tảng khác theo hướng dẫn sau:
Tài liệu tham khảo
- Tài liệu tham khảo về API của Android ( Java / Kotlin)
- Tài liệu tham khảo API dành cho iOS ( GOALC / Swift)
- Tài liệu tham khảo API JavaScript ( phiên bản 9 / phiên bản 8)
- Tài liệu tham khảo về SDK dành cho quản trị viên ( Node.js / Java / Python / .NET)