[javascript] Firebase에서 FCM 메시지를 보내는 방법

Firebase에서 FCM 메시지를 보내는 방법은 크게 두 가지로 나눌 수 있습니다. 하나는 Firebase Admin SDK를 사용하여 서버에서 메시지를 보내는 방법이고, 다른 하나는 Firebase Cloud Messaging API를 직접 호출하여 메시지를 보내는 방법입니다. 각각의 방법에 대해 설명하겠습니다.

  1. Firebase Admin SDK를 사용하여 서버에서 메시지 보내기:

    이 방법은 Firebase Admin SDK를 사용하여 서버 측에서 FCM 메시지를 보내는 것입니다. 이 방법을 사용하려면 서버에서 Firebase Admin SDK를 초기화해야 합니다. Node.js 예시 코드를 사용하여 설명하겠습니다.

const admin = require('firebase-admin');
    
    // Firebase Admin SDK를 초기화합니다.
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      // 서비스 계정 JSON 키 파일을 제공합니다.
    });
    
    // 메시지 페이로드를 생성합니다.
    const message = {
      notification: {
        title: '알림 제목',
        body: '알림 내용',
      },
      token: 'FCM_TOKEN',
    };
    
    // FCM을 통해 메시지를 보냅니다.
    admin.messaging().send(message)
      .then((response) => {
        console.log('Successfully sent message:', response);
      })
      .catch((error) => {
        console.log('Error sending message:', error);
      });
위의 예시 코드에서 `serviceAccount`는 Firebase Admin SDK에 대한 인증 정보를 제공하기 위한 서비스 계정의 JSON 키 파일입니다. Firebase 콘솔의 "서비스 계정" 탭에서 새 서비스 계정을 생성하고 해당 JSON 키 파일을 얻을 수 있습니다.

`message` 객체를 원하는대로 수정하여 원하는 페이로드를 설정할 수 있습니다. 메시지 수신 대상인 디바이스의 FCM 토큰은 `token` 속성에 지정하면 됩니다.
  1. Firebase Cloud Messaging API를 직접 호출하여 메시지 보내기:

    이 방법은 HTTP 요청을 사용하여 Firebase Cloud Messaging API를 직접 호출하여 FCM 메시지를 보내는 것입니다. 다음은 cURL을 사용한 예시 요청입니다:

curl -X POST -H "Authorization: Bearer YOUR_SERVER_KEY" -H "Content-Type: application/json" -d '{
      "notification": {
        "title": "알림 제목",
        "body": "알림 내용"
      },
      "token": "FCM_TOKEN"
    }' "https://fcm.googleapis.com/fcm/send"
위의 예시 요청에서 `YOUR_SERVER_KEY`는 Firebase 콘솔에서 확인한 서버 키입니다. `FCM_TOKEN`은 메시지를 받을 디바이스의 FCM 토큰입니다. 요청의 `notification` 객체를 원하는대로 수정하여 원하는 페이로드를 설정할 수 있습니다.

이 방법을 사용할 때는 요청을 보내는 클라이언트에서 액세스 토큰을 안전하게 보호해야 합니다.

이러한 방법 중 하나를 선택하여 FCM 메시지를 보낼 수 있습니다. 어떤 방법을 선택할지는 사용 사례와 환경에 따라 달라집니다.