要推送通知到 react native,除了可以從 firebase 網頁去發送以外,也可以透過安裝firebase-admin套件把發送的方法傳到 api 裡,實現利用打 api 來發送通知。

大綱:

  1. 新增firebase專案 & 設定
  2. 安裝firebase-admin & 設定
  3. router中引用

新增firebase專案 & 設定

 

新增專案

首先需要有一個 firebase 帳號並創建專案,創建專案可以參考下面文章的步驟 1:

設定專案

進入專案設定 > 服務帳戶 > 點擊產生新的私密金鑰,並且把下載下來的檔案放到根目錄。

 

安裝firebase-admin & 設定

 

安裝firebase-admin

$ yarn add firebase-admin

 

設定 express 專案

把剛剛在firebase > 專案設定 > 服務帳戶那邊的程式碼片段貼在app.js

const express = require('express');
const cors = require('cors');
const app = require('express')();
const env = require('dotenv').config().parsed;
const http = require('http').Server(app);
const admin = require('firebase-admin');
const serviceAccount = require('./firebase-adminsdk.json');

app.use(cors());
app.use(express.json());
app.use('/', require('./api'));
http.listen(3000, () => console.log('connected 3000'));

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: env.FIREBASE_DATABASE_URL
});

 

router中引用

const { Router } = require('express');
const admin = require('firebase-admin'); // <-- 加入這行
const router = Router();

router.post('/newOrder', async (req, res) => {
  
  // 要傳送的訊息格式
  const message = {
    android: {
      notification: {
        title: 'sdvvvqw',
        body: 'tedsvsd test',
        channel_id: 'orderChannel'
      }
    },
    token: req.body.token
  };
  
  // 發送通知
  await admin.messaging().send(message);
  res.status(204).json({});
});

module.exports = router;

這時候可以使用postman發送request看看前端有沒有收到訊息。請注意前端也必須監聽channel_id同名的頻道才收得到喔!


如何確定前端有收到通知?

請參考本篇說明:

0
0 回復

發表評論

想要加入討論嗎?
請盡情發表您的想法!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。