- vừa được xem lúc

Push nofication firebase kết hợp reactjs và nodejs

0 0 7

Người đăng: Phạm Đức Qúy

Theo Viblo Asia

1. Mở đầu:

Chào mọi người hôm nay mình sẽ hướng dẫn mọi người cách push nofication firebase với reactjs và nodejs. Không vong vo nữa chúng ta cùng làm nào

2. Tạo project reactjs và nodejs

Chú ý: Máy tính của bạn phải cài đặt sẵn nodejs trước khi tạo project reactjs và nodejs, nếu ai chưa cài đặt truy cập vào link: https://nodejs.org/en

1. Tạo project reactjs

Để tạo dự án reactjs bạn chạy câu lệnh sau:

npx create-react-app reactjs-firebase

Sau đó bạn chạy lệnh sau để cài đặt các package cần thiết cho project:

npm install firebase --save

2. Tạo project nodejs

Để tạo dự án nodejs bạn chạy câu lệnh sau:

npm init

Sau đó bạn chạy lệnh sau để cài đặt các package cần thiết cho project:

npm install fcm-notification fcm-node express --save

3. Cấu hình firebase

1. Đăng nhập firebase

Chúng ta sẽ truy cập vào link này https://firebase.google.com/ để đăng kí hoặc đăng nhập

image.png

Các bạn click vào nút create a project như ảnh trên:

image.png

Tiếp theo chúng ta nhập tên tùy ý và click continue

image.png

Tiếp tục click continue

image.png

Chúng ta click vào create a new account và nhập tên tùy ý như ảnh ở dưới

image.png

Chúng ta sẽ chọn giống ảnh bên dưới và nhấn Create project

image.png

Tạo project chúng ta sẽ phải đợi 1 lúc

image.png

2. Tạo project firebase cho web

Sau khi project thông báo được tạo xong các bạn click vào button continue sau đó sẽ chuyển đến trang quản lý và bây giờ chúng ta sẽ click vào button như trong hình dưới đây để đăng ký project cho web

image.png

Các bạn sẽ nhập tên project của các bạn:

image.png

Sau đó click vào button Register app, bạn sẽ thấy 1 trang hướng dẫn mở ra:

image.png

Bạn copy đoạn code ở trên lưu vào 1 nơi nào đó để tý chúng ta sử dụng nhé

4. Cấu hình

1. Cấu hình firebase cho Reactjs

Chúng ta vào project reactjs vừa tạo ở trên và tạo 1 file có tên là firebase-messaging-sw.js nằm trong thư mục public

// Scripts for firebase and firebase messaging
// eslint-disable-next-line no-undef
importScripts('https://www.gstatic.com/firebasejs/9.0.0/firebase-app-compat.js');
// eslint-disable-next-line no-undef
importScripts('https://www.gstatic.com/firebasejs/9.0.0/firebase-messaging-compat.js'); // Initialize the Firebase app in the service worker by passing the generated config
const firebaseConfig = { apiKey: "your-code", authDomain: "your-code", databaseURL: "your-code", projectId: "your-code", storageBucket: "your-code", messagingSenderId: "your-code", appId: "your-code"
}; // eslint-disable-next-line no-undef
firebase.initializeApp(firebaseConfig); // Retrieve firebase messaging
// eslint-disable-next-line no-undef
const messaging = firebase.messaging(); messaging.onBackgroundMessage(function(payload) { console.log('Received background message ', payload); const notificationTitle = payload.notification.title; const notificationOptions = { body: payload.notification.body, }; // eslint-disable-next-line no-restricted-globals self.registration.showNotification(notificationTitle, notificationOptions);
});

và cấu chỉnh sửa firebaseConfig mà bạn vừa tạo ở bước trước

Tiếp theo trong thư mục src các bạn tạo file firebase.js và copy code dưới đây

import { initializeApp } from "firebase/app";
import { getMessaging, getToken, onMessage } from "firebase/messaging"; const firebaseConfig = { apiKey: "your-code", authDomain: "your-code", databaseURL: "your-code", projectId: "your-code", storageBucket: "your-code", messagingSenderId: "your-code", appId: "your-code"
}; const firebaseApp = initializeApp(firebaseConfig);
const messaging = getMessaging(firebaseApp); export const fetchToken = (setTokenFound) => { return getToken(messaging, { vapidKey: "", }) .then((currentToken) => { if (currentToken) { console.log("current token for client: ", currentToken); setTokenFound(true); } else { console.log( "No registration token available. Request permission to generate one." ); setTokenFound(false); } }) .catch((err) => { console.log("An error occurred while retrieving token. ", err); });
}; export const onMessageListener = () => new Promise((resolve) => { onMessage(messaging, (payload) => { resolve(payload); }); });

Sau đó cũng chỉnh sửa firebaseConfig

return getToken(messaging, { vapidKey: "", })

Bây giờ chúng ta sẽ lấy vapidKey

Các bạn quay lại trang quản lý firebase click vào tab như trong ảnh dưới đây

image.png

Sau đó chọn tab cloud messaging và kéo xuống dưới cùng click vào nút Generate key pairđể tạo key sau đó các bạn copy key vừa tạo và thay thế giá trị cho vapidKey

image.png

Tiếp theo các bạn copy đoạn code dưới đây vào thư mục src/App.js

import logo from './logo.svg';
import './App.css';
import {useEffect, useState} from 'react';
import { fetchToken, onMessageListener } from './firebase';
import 'bootstrap/dist/css/bootstrap.min.css'; function App() { const [show, setShow] = useState(false); const [notification, setNotification] = useState({title: '', body: ''}); const [isTokenFound, setTokenFound] = useState(false); useEffect(() => { fetchToken(setTokenFound); },[]) onMessageListener().then(payload => { setNotification({title: payload.notification.title, body: payload.notification.body}) setShow(true); console.log(payload); }).catch(err => console.log('failed: ', err)); const onShowNotificationClicked = () => { setNotification({title: "Notification", body: "This is a test notification"}) setShow(true); } return ( <div className="App"> <header className="App-header"> {isTokenFound && <h1> Notification permission enabled 👍🏻 </h1>} {!isTokenFound && <h1> Need notification permission ❗️ </h1>} <img src={logo} className="App-logo" alt="logo" /> </header> </div> );
} export default App;

Chúng ta khởi động project bằng command npm start và truy cập http://localhost:3000/. Và cho phép trình duyệt đẩy thông báo như hình ảnh bên dưới:

image.png

Bây giờ các bạn bật cửa sổ console của trình duyệt lên và xem sẽ xuất hiện 1 chuỗi token cho client:

image.png

Copy đoạn chuỗi giống như ảnh mình khoanh đỏ và vào lại trang quản lý firebase chọn tab như dưới ảnh

image.png

Các bạn click vào button Create your first campaign để tạo 1 message test

image.png

Tiếp đến các bạn đặt Notification titleNotification text:

image.png

Rồi click vào button send test message ở bên phải. Nó sẽ hiển thị ra popup bạn paste đoạn token mà bạn vừa copy cửa sổ console vào đó rồi nhấn dấu + và cuối cùng nhấn button test

image.png

Tuyệt vời đến đã xong sau bao nhiêu bước cuối cùng thông báo đã được đẩy ra 😃

image.png

Bước setup reactjs đã xong tiếp tục chúng ta đến bước setup nodejs

2. Cấu hình firebase cho Nodejs

Trong folder nodejs bạn tạo file index.js và copy đoạn code dưới đây

var FCM = require('fcm-node');
var serviceAccount = require("your_path_key");
const express = require("express");
const app = express();
var admin = require("firebase-admin");
app.use(express.json())
fcm = new FCM("private_key");
admin.initializeApp({ credential: admin.credential.cert(serviceAccount),
}); const certPath = admin.credential.cert(serviceAccount); exports.sendPushNofication = (req, res, next) => { console.log(req) } app.post('/send-noti', (req, res) => { console.log(req.body.fcm_token) try { let message = { to:'token_client', notification: { title: req.body.title, content: req.body.content }, token: req.body.fcm_token } fcm.send(message, function(err, resp) { if (err) { return res.status(500).send({ message: err }) } else { return res.status(200).send({ message: resp }) } }) } catch (err) { console.log(err) }
}) app.listen(5000, function() { console.log(`port run on localhost:5000`);
})

Sau đó bạn vào lại trang firebase vào chọn tab như ảnh ở dưới:

image.png

Bạn nhấn vào genarate nút Generate new private key để tạo key sau đó lưu nó vào thư mục nodejs

image.png

và thay thế your_path_key trong code nằm ở ngay trên đầu thành đường dẫn chưa key của bạn vừa tải về:

image.png

Tiếp tục các bạn chọn tab như trong ảnh và click vào trang button Manage API in Google Cloud Console để chuyển sang trang quản lý goog cloud để enable firebase

image.png

Sau khi bạn enable xong load lại trang quản lý firebase sẽ thấy xuất hiện đoạn server key

image.png

Copy và paste vào thay private_key trong fcm = new FCM("private_key");

Bước cuối cùng bạn vào lại trình duyệt http://localhost:3000/ , và bật cửa sổ console của trình duyệt lên và xem sẽ xuất hiện 1 chuỗi token cho client:

image.png

copy chuỗi trên vào thay thê token_client nằm ở trong

 let message = { to:'token_client', notification: { title: req.body.title, body: req.body.content }, token: req.body.fcm_token }

Ok sau bao nhiêu bước giờ đã xong chúng ta cùng kiểm tra thành quả thôi nào Bây giờ chúng ta sẽ dùng postman để test nhé. Nôi dung postman bạn điền giống như mình nhé

image.png

Sau khi sử dụng postman để gửi bạn sẽ thấy thông báo đã được đẩy ra

image.png

5. Kết luận

Bạn này cũng khá dài có thể khi mình viết sẽ còn nhiều thiếu sót hoặc không mô tả được hết ý, mong mọi người góp ý để mình nâng cao chất lượng bài viết. Mình xin cảm ơn mọi người hãy follow và ủng hộ mình

Bình luận

Bài viết tương tự

- vừa được xem lúc

Viết một chiếc app quản lý Hạn sử dụng của thực phẩm

Mở đầu. Tôi là 1 kỹ sư công nghệ thông tin mới ra trường. Trong thời gian học Đại học, từ năm 1 tới năm 4, tôi đi làm thêm tại TSUTAYA (chuỗi cửa hàng bán sách, video...v.v nổi tiếng bên Nhật). Về chiếc App tôi đã phát triển. App tôi phát triển là Web App giúp quản lý hạn sử dụng của đồ ăn.

0 0 40

- vừa được xem lúc

Firebase In-App Messaging (FIAM)

Giới thiệu. Firebase In-App Messaging(FIAM) là một tính năng mới của Firebase đang được giới thiệu và phát triển.

0 0 68

- vừa được xem lúc

[Android] Tips for building a quality app with Firebase

Overview. Trong vài năm qua, kỳ vọng của người dùng về ứng dụng đã ngày càng cao.

0 0 26

- vừa được xem lúc

Hướng dẫn tạo link tracking nguồn cài đặt cho mobile app (xác định nguồn cài đặt cho mobile app)

Giới thiệu. Bạn đang chạy quá nhiều campaign cho ứng dụng mobile từ các mạng xã hội: facebook, twitter, ... các chiến dịch offline cũng như các chiến dịch online của bên thứ 3. Bạn không thể xác định được nguồn nào mang cho mình lượng install cao nhất. Vì nếu dùng shortlink thì chỉ đo được lượt clic

0 0 28

- vừa được xem lúc

Login LINE với Firebase Authentication

Ngày nay, khi sử dụng một dịch vụ online online, chúng ta có xu hướng sử dụng một tài khoản liên kết (Google, Facebook, Twitter... tạm gọi là bên thứ 3) để đăng nhập vào dịch vụ đó thay vì cứ mỗi một dịch vụ, ta lại tạo một account/passord riêng. Lúc này Firebase Authentication (từ đây sẽ gọi tắt là

0 0 35

- vừa được xem lúc

Tìm hiểu thêm về Firebase Android

Khi bạn phát triển ứng dụng Android sử dụng Firebase, bạn sẽ thấy những khái niệm riêng chỉ của Firebase. Bài này sẽ giúp các bạn hiểu được phần nào về Firebase hơn, hoặc có những resource để các bạn có thể đọc tham khảo thêm.

0 0 32