PWA

ChatGPT와 FCM 개발 - reboot

그랜파 개발자 2024. 9. 23. 20:25

82. reboot - messaging.getToken

개발을 계속 진행하면서 문제를 해결하기 위하여 여러 가지 질문을 하면서 개선을 해 봤지만 기능 구현에 실패했습니다. 로그 상으로 정상적으로 데이터를 넣었다고 생각을 하는데 FirebaseMessingError가 발생합니다.

 

미로에 빠졌습니다. 이때는 처음부터 새로 시작하는 것이 좋습니다.

FCM 푸시 알림을 만들기 위해 ChatGPT에게 FCM 구현에 대해 질문을 했을 때 messaging.getToken()으로 Token을 받아 이것으로 알림을 요청할 수 있다는 답을 받았는데 오류에 대해 정밀하게 파악을 하지 않은 채로 다른 내용으로 이동하였습니다.

messaging.getToken()으로 돌아와 다시 시작합니다.

ChatGPT에게 물었습니다.

Please explain messaging.getToken.

messaging.getToken 설명해줘.

ChatGPT

 

messaging.getToken is a method in the Firebase Cloud Messaging (FCM) JavaScript SDK that retrieves a device's registration token. This token uniquely identifies the user's device or browser and is used by Firebase to send push notifications to that specific device.

messaging.getToken은 기기의 등록 토큰을 검색하는 FCM(Firebase Cloud Messaging) JavaScript SDK의 메소드입니다. 이 토큰은 사용자의 기기나 브라우저를 고유하게 식별하며 Firebase에서 해당 특정 기기에 푸시 알림을 보내는 데 사용됩니다.

When and Why to Use messaging.getToken

messaging.getToken을 사용해야 하는 시기와 이유

When implementing push notifications in a web application, the getToken method is essential for obtaining the device's unique registration token. This token must be sent to your server so that you can later send targeted notifications to this specific device or browser instance.

웹 애플리케이션에서 푸시 알림을 구현할 때 기기의 고유한 등록 토큰을 얻으려면 'getToken' 메서드가 필수적입니다. 나중에 이 특정 장치 또는 브라우저 인스턴스에 대상 알림을 보낼 수 있도록 이 토큰을 서버로 전송해야 합니다.

How messaging.getToken Works

messaging.getToken 작동 방식

  1. User Permission: Before calling getToken, the user must grant permission for notifications. The method doesn't work without permission.
    사용자 권한: getToken을 호출하기 전에 사용자는 알림에 대한 권한을 부여해야 합니다. 이 방법은 허가 없이는 작동하지 않습니다.
  2. VAPID Key: The getToken method requires a VAPID (Voluntary Application Server Identification for Web Push) public key, which is used to authenticate the sender of the notifications.
    VAPID 키: 'getToken' 메서드에는 알림 보낸 사람을 인증하는 데 사용되는 VAPID(Voluntary Application Server Identification for Web Push) 공개 키가 필요합니다.
  3. Token Generation: Once the above conditions are met, the method returns a promise that resolves with the device's FCM registration token.
    토큰 생성: 위 조건이 충족되면 메서드는 기기의 FCM 등록 토큰으로 해결되는 Promise를 반환합니다.

Syntax

For Firebase v9+ (modular syntax):

Firebase v9+(모듈식 구문)의 경우:

import { getMessaging, getToken } from 'firebase/messaging';
import { initializeApp } from 'firebase/app';

const firebaseConfig = {
  // Your Firebase config
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
const messaging = getMessaging(app);

// Request token
getToken(messaging, { vapidKey: 'YOUR_PUBLIC_VAPID_KEY' })
  .then((currentToken) => {
    if (currentToken) {
      console.log('FCM Token:', currentToken);
      // Send the token to your server
    } else {
      console.log('No registration token available. Request permission to generate one.');
    }
  })
  .catch((err) => {
    console.log('An error occurred while retrieving token. ', err);
  });

Parameters 매개변수

  • messaging: The Firebase Messaging instance created using getMessaging.
    messaging: getMessaging을 사용하여 생성된 Firebase Messaging 인스턴스입니다.
  • vapidKey: This is a required option. It is your VAPID public key, used to ensure that your notifications are secure and authentic. You generate this key pair when setting up your FCM configuration.
    vapidKey: 필수 옵션입니다. 이는 알림의 보안과 신뢰성을 확인하는 데 사용되는 VAPID 공개 키입니다. FCM 구성을 설정할 때 이 키 쌍을 생성합니다.

Return Value 반환 값

  • Promise<String>: The method returns a promise that resolves to a string containing the registration token for the device. If the promise rejects, it returns an error indicating why the token couldn't be retrieved.
    Promise: 이 메서드는 장치에 대한 등록 토큰이 포함된 문자열로 확인되는 Promise를 반환합니다. Promise가 거부되면 토큰을 검색할 수 없는 이유를 나타내는 오류를 반환합니다.

Error Handling 오류 처리

Common errors that might occur include: 발생할 수 있는 일반적인 오류는 다음과 같습니다.

  • Permission Denied: If the user denies permission, getToken will fail.
    권한 거부: 사용자가 권한을 거부하면 'getToken'이 실패합니다.
  • Invalid VAPID Key: If the VAPID key is incorrect or not provided, the method will fail to retrieve a token.
    잘못된 VAPID 키: VAPID 키가 올바르지 않거나 제공되지 않으면 메소드가 토큰을 검색하지 못합니다.
  • Network Issues: Connectivity problems can also prevent getToken from successfully retrieving the token.
    네트워크 문제: 연결 문제로 인해 'getToken'이 토큰을 성공적으로 검색하지 못할 수도 있습니다.

Example Use Case 사용 사례 예시

Subscription to Notifications: You would use messaging.getToken when a user subscribes to notifications on your web app. After obtaining the token, you can send it to your server to register the device and later send push notifications to it.

알림 구독: 사용자가 웹 앱에서 알림을 구독할 때 messaging.getToken을 사용합니다. 토큰을 얻은 후 이를 서버로 보내 장치를 등록하고 나중에 푸시 알림을 보낼 수 있습니다.

Summary 요약

  • messaging.getToken is crucial for generating the registration token that identifies the user's device/browser for FCM. messaging.getToken은 FCM에 대한 사용자 장치/브라우저를 식별하는 등록 토큰을 생성하는 데 중요합니다.
  • You must obtain the user's permission and provide a VAPID public key.
    반드시 사용자의 허가를 받고 VAPID 공개키를 제공해야 합니다.
  • The token is essential for sending push notifications to a specific device.
    특정 기기에 푸시 알림을 보내기 위해서는 토큰이 꼭 필요합니다.

By using getToken, you ensure that your application can send targeted and secure notifications to users.

getToken을 사용하면 애플리케이션이 사용자에게 대상이 지정된 보안 알림을 보낼 수 있는지 확인할 수 있습니다.