Cách gửi notification trong Spring boot bằng FCM
Người viết: Nguyen The Linh B Bài viết hôm nay chúng ta sẽ cùng nhau tìm hiểu FCM là gì. Bên cạnh đó là cách gửi notification trong Spring boot bằng FCM như thế nào nhé! Bắt đầu nào! Cách xây dựng blockchain đơn giản chỉ với 200 dòng code Cách xây dựng mạng ...
Người viết: Nguyen The Linh B
Bài viết hôm nay chúng ta sẽ cùng nhau tìm hiểu FCM là gì. Bên cạnh đó là cách gửi notification trong Spring boot bằng FCM như thế nào nhé!
Bắt đầu nào!
Cách gửi notification trong Spring boot bằng FCM
Giới thiệu về FCM
Firebase Cloud Messaging (FCM) là một dịch vụ miễn phí của Google. Thông qua FCM, nhà phát triển ứng dụng có thể gửi thông điệp một cách nhanh chóng, an toàn tới các thiết bị cài đặt ứng dụng của họ.
Cách thức hoạt động của FCM
Mô hình hoạt động của FCM. Đơn giản FCM hoạt động nhờ 3 thành phần:
- Publisher: Nguồn gửi notification, đây chính là server API mà chúng ta sẽ cài đặt
- FCM Server: Đây là API trung gian giữa Publisher và Client App có nhiệm vụ tiếp nhận Notification từ Publisher và push Notification tới client. Ngoài ra nó cũng tiếp nhận message đăng kí device token từ client.
- Client app: Thiết bị nhận notification, cự thể ở đây là các thiết bị Android.
Ở bài này, chúng ta sẽ đứng ở vai trò publisher để cài đặt thiết lập FCM. Cụ thể chúng ta sẽ thiết lập nó trong Project Spring boot.
Cài đặt FCM
Bước 1: Trong Firebase console:
https://console.firebase.google.com/u/0/
Chúng ta tạo mới một project trên firebase:
Continue:
Bước 2: Tạo private key để sử dụng Firebase Admin SDK. Đây là SDK sẽ được thêm vào trong project Spring boot.
Project settings -> Service accounts -> Generate new private key
Tiếp theo:
Tiếp tục:
Ta sẽ nhận được một file json:
Thêm và sử dụng Firebase Admin SDK
Bước 1: Tạo project Spring boot:
Bước 2: Copy file Json mà mình tạo được từ bước Generate new private key vào resource và config file application.properties như sau:
Bước 3: Thêm dependency sau:
1 2 3 4 5 6 7 |
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>6.9.0</version> </dependency> |
Cấu trúc project
File: PushNotificationController
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@RestController public class PushNotificationController { @Autowired private FCMService fcmService; @PostMapping("/notification") public String sendSampleNotification(@RequestBody PnsRequest pnsRequest) { return fcmService.pushNotification(pnsRequest); } } |
File: PnsRequest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class PnsRequest { private String fcmToken; private String content; public String getFcmToken() { return fcmToken; } public void setFcmToken(String fcmToken) { this.fcmToken = fcmToken; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } |
File: FCMInitializer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@Service @Log4j public class FCMInitializer { @Value("${app.firebase-configuration-file}") private String firebaseConfigPath; @PostConstruct public void initialize() { log.info("Start init"); try { FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(GoogleCredentials.fromStream(new ClassPathResource(firebaseConfigPath).getInputStream())).build(); if (FirebaseApp.getApps().isEmpty()) { FirebaseApp.initializeApp(options); log.info("Firebase application has been initialized"); } } catch (IOException e) { log.error(e.getMessage()); } } } |
File: FCMService
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
@Service public class FCMService { public String pushNotification(PnsRequest pnsRequest) { Message message = Message.builder() .putData("content", pnsRequest.getContent()) .setToken(pnsRequest.getFcmToken()) .build(); String response = null; try { response = FirebaseMessaging.getInstance().send(message); } catch (FirebaseMessagingException e) { e.printStackTrace(); } return response; } } |
Kết quả test:
Kết luận
Vậy là mình đã hướng dẫn mọi người cách thêm FCM vào trong project Spring boot.
Hy vọng bài viết này sẽ hữu ích với mọi người.
Cảm ơn mọi người đã theo dõi bài viết!
Có thể bạn quan tâm:
- Xây dựng server-side để push notification với FCM
- Login Social React Native bằng FireBase – dành cho Android
- Tạo Notification trong React Native thật đơn giản!
Xem thêm việc làm Software Developers trên TopDev
TopDev via viblo.asia