2024.07.22 20:37

안드로이드는 앱이 foreground일때 서버로부터 푸시가 수신되면 자동으로 알림창을 띄워주는 기능이 없어요. 그래서 수신을 받은 후 프로그램적으로 노티를 띄워주는데 이게 로컬 노티입니다.
반면에 iOS는 앱이 foreground일때 알림을 띄워주는 옵션 (FirebaseMessaging.instance .setForegroundNotificationPresentationOptions) 이 있어서 요것만 구성해주면 되어요.


로그인해서 토큰을 모노레포 루트의 .env.local에 저장

const fs = require('fs')
const dotenv = require('dotenv')
 
const envFilePath = '../../.env.local'
/**
 * @typedef {Object} ENV
 * @property {string} STUDENT_ID
 * @property {string} STUDENT_PW
 * @property {string} STUDENT_TOKEN
 */
/**
 * @type {ENV}
 */
const existingEnv = dotenv.parse(fs.readFileSync(envFilePath))
 
fetch('https://~~~.com/login', {
  method: 'POST',
  body: JSON.stringify({
    id: existingEnv.STUDENT_ID,
    password: existingEnv.STUDENT_PW,
  }),
  headers: {
    'Content-Type': 'application/json'
  },
}).then(async (res) => {
  const { data } = await res.json()
 
  const mergedEnv = { ...existingEnv, STUDENT_TOKEN: data.token }
  const envString = Object.keys(mergedEnv)
    .map((key) => `${key}=${mergedEnv[key]}`)
    .join('\n')
 
  fs.writeFileSync(envFilePath, envString)
 
  console.table(Object.assign(mergedEnv))
  console.log(`${envFilePath}에 Token 저장 성공 `)
})