Firebase push notification nodejs

Firebase push notification. Hay có thể gọi là firebase send notification from server. Bạn hình dung thế này, khi điện thoại của bạn nhận được notification bởi một ứng dụng mà bạn đã install và làm sao bạn lại nhận được notification đó.

Thì đó chính là nhiệm vụ của bài viết hôm nay. Trong bài viết này tôi sẽ show cách mà tôi đã từng làm dưới nodejs để phục vụ cho việc Firebase push notification node js

Và đến thời điểm này, thì nó vẫn đang chạy bình thường.

Xem thêm bài viết về firebase database: 

- Hướng dẫn verify SMS Firebase 

- Hướng dẫn query data firebase 

- Hướng dẫn firebase admin verify custom token 

- Hướng dẫn login google, facebook using Firebase 

Hướng dẫn upload file using firebase 

Firebase là gì?

Firebase là Backend-as-a-Service - BaaS. Firebase theo nghĩa rộng là nền tảng phát triển ứng dụng trên thiết bị di động và web. Firebase giải phóng các developer để tập trung tạo ra trải nghiệm cho người dùng sử dụng sản phẩm một cách tuyệt vời. Bạn không cần quản lý máy chủ. Bạn không cần viết API. Firebase là máy chủ, API và kho dữ liệu của bạn, tất cả đều được viết một cách tổng quát đến mức bạn có thể sửa đổi nó cho phù hợp với hầu hết nhu cầu. Vâng, đôi khi bạn sẽ cần phải sử dụng các dịch vụ khác của Google Cloud cho các ứng dụng nâng cao của mình. 

Tips: Firebase là gì? Khi nào nên sử dụng Firebase. 

Firebase database là gì?

Trong những dịch vụ của Firebase thì trong đó cung cấp cho ta một dịch vụ đó là database. Database cho phép chúng ta có thể lưu data, query data một cách nhanh chóng. Và bạn đã nghe tới khái niệm này chưa? Đó là firebase realtime database. Firebase realtime database là gì? khái niệm mà một app chat nên tìm hiêủ và sử dụng firebase database một cách triệt để. firebase realtime database ra đời và có thể thay thê socket.io để làm nhiệm vụ runtime cho mọi action của user. Notes: khi tạo database thì chú ý tới việc tạo rules, nếu không dữ liệu sẽ không bảo mật và ai cũng sẽ truy cập được đến data của bạn. 

Đọc thêm: Bảo mật với rules trong firebase database  

Tips: Build event is typing trong ứng dụng  chat sử dụng firebase realtime database

Firebase send notification from server

Hiện tại trong bài viết này tôi chỉ giới thiệu về cách push trong server và cụ thể đó nodejs. Firebase push notification hỗ trợ rất nhiều về Admin SDK như Nodejs, Java, Python, Go, .NET ... Nên chúng ta thấy dự án nào phù hợp thì cứ triển khai thôi. 

ref: https://firebase.google.com/docs/reference/admin/node

Firebase push notification nodejs

Trước tiên bạn cần phải có tài khoản và tạo project trên firebase. Cách tạo thì rất nhiều bài viết nói rồi. Bạn nào chưa biết có thể đọc thêm tại đây: Để tạo một Firebase project thì các bạn có thể vào đây xem : Cách tạo firebase project OK bây giờ chúng ta bắt đầu: Tôi tạo một file có tên là PushNotification.js, chú ý do file tôi đã viết từ lâu rồi nên vẫn còn dùng prototype. 

Bạn nào viết mới thì nên viết theo cấu trúc của class Es6 thì hay hơn nhiều. 

# Create PushNotification.js 

Trước hết install firebase-admin

> npm i firebase-admin --save
> touch PushNotification.js
var firebase = require("firebase-admin");
var configJsonFirebase = require('/config/keys/xxxxxxxxxxx.json'); 
function PushNotifier() {
  var defaultAppConfig = {
      credential: provider.credential.cert(configJsonFirebase),
      databaseURL: "https://-xxxxxx.com"
  }
  // Initialize the default app
  firebase.initializeApp(defaultAppConfig);
}

Trong đó: configJsonFirebase bạn có thể lấy từ trong project của bạn.  Bạn xem hình ảnh để biết rõ hơn

firebase push notification

Có thể theo link này và thay xxxxxxxxx bằng id project của bạn. https://console.firebase.google.com/u/0/project/xxxxxxxxx/settings/serviceaccounts/adminsdk

Cick vào Button Generate new private key thì bạn sẽ lấy được file json. 

Xong phần config rồi, thì chúng ta bắt đầu tạo function để firebase push notification nodejs.

Push notification firebase ios

Trong file đó ta viết thêm một function gửi notification đến thiết bị ios

PushNotifier.prototype.sendNotificationToDeviceIOS = function(data){
  let ios = {
      headers: {
          'apns-priority': '10', //mức độ ưu tiên khi push notification
          'apns-expiration': '360000'// hết hạn trong 1h 
      },
      payload: {
        aps: {
          alert: {
            title: 'title push'
          },
          badge: 1,
          sound: 'default',
        }
      }
  }
  let message = {
      apns: ios,
      token: tokenDevice // token của thiết bị muốn push notification
  }
  fireabse.messaging().send(message)
  .then((response) => {
      // Response is a message ID string.
  })
  .catch((error) => {
      //return error
  });
}

Push notification firebase android

Cũng giống như việc gửi tới thiết bị ios thì ở android cũng tương tự, nhưng chỉ khác định dạng và tham số

PushNotifier.prototype.sendNotificationToDeviceIOS = function(data){
  let android = {
      priority: "High", //mức độ ưu tiên khi push notification
      ttl: '360000'// hết hạn trong 1h
      data: {
        title: '',
        content: ''
      }
  }
  
  let message = {
      android: android,
      token: tokenDevice // token của thiết bị muốn push notification
  }
  fireabse.messaging().send(message)
  .then((response) => {
      // Response is a message ID string.
  })
  .catch((error) => {
      //return error
  });
}

Firebase push notification multiple devices

Bạn muốn push notification tới nhiều thiết bị thì chúng ta có thể sử dụng như trên nhưng

token: [tokenDevice1, tokenDevice2, ... ]

8 - Kết luận

Như vậy chúng ta đã đi qua một bài viết nữa về firebase. Nếu bạn nào chưa hiểu nhiều về Firebase thì có thể tìm hiểu những bài viết mà tôi đã viết về chủ đề này. 

Xem thêm bài viết về firebase: 

- Hướng dẫn verify SMS Firebase 

- Hướng dẫn query data firebase 

- Hướng dẫn firebase admin verify custom token 

- Hướng dẫn login google, facebook using Firebase 

Hướng dẫn upload file using firebase 

Cảm ơn các bạn đã đọc!