83. messaging.getToken과 pushManager.subscribe의 차이점
messaging.getToken과 pushManager.subscribe의 차이점이 뭘까요? messaging.getToken은 Firebase 클라우드 메시징의 일부이고, pushManager.subscribe는 브라우저에서 제공하는 하위 수준 API라고 합니다. 이것을 구분하지 못해 미로에 갇힌 것 같습니다.
ChatGPT에게 물었습니다.
What is the difference from registration.pushManager.subscribe?
registration.pushManager.subscribe 와의 차이점은?
ChatGPT
Both messaging.getToken from Firebase Cloud Messaging (FCM) and registration.pushManager.subscribe from the Web Push API are used to subscribe a device or browser to push notifications, but they operate in different contexts and serve different purposes. Here’s a comparison:
FCM(Firebase Cloud Messaging)의 messaging.getToken과 Web Push API의 registration.pushManager.subscribe는 모두 기기나 브라우저에서 푸시 알림을 구독하는 데 사용되지만 서로 다른 컨텍스트에서 작동하고 서로 다른 목적을 제공합니다. 비교는 다음과 같습니다.
1. Purpose and Context 목적 및 맥락
messaging.getToken (Firebase Cloud Messaging):
messaging.getToken(Firebase 클라우드 메시징):
- Purpose: Used within the Firebase ecosystem to retrieve an FCM registration token that uniquely identifies a device/browser instance for receiving push notifications.
목적: 푸시 알림을 수신하기 위해 기기/브라우저 인스턴스를 고유하게 식별하는 FCM 등록 토큰을 검색하기 위해 Firebase 생태계 내에서 사용됩니다. - Context: Part of the Firebase SDK, which abstracts many of the complexities of managing push notifications, including handling token generation, managing subscriptions, and sending messages.
컨텍스트: 토큰 생성 처리, 구독 관리, 메시지 전송 등 푸시 알림 관리의 여러 복잡성을 추상화하는 Firebase SDK의 일부입니다. - Authentication: Requires a VAPID (Voluntary Application Server Identification) public key as part of the configuration to authenticate the sender of notifications.
인증: 알림 보낸 사람을 인증하려면 구성의 일부로 VAPID(Voluntary Application Server Identification) 공개 키가 필요합니다. - Usage: Primarily used in web apps that leverage Firebase's infrastructure for managing push notifications, including server-side message sending, analytics, and more.
용도: 서버 측 메시지 전송, 분석 등을 포함하여 푸시 알림을 관리하기 위해 Firebase의 인프라를 활용하는 웹 앱에 주로 사용됩니다.
registration.pushManager.subscribe (Web Push API):
registration.pushManager.subscribe(웹 푸시 API):
- Purpose: Directly subscribes a user to push notifications via the browser’s native Push API, returning a PushSubscription object that can be used to send push notifications via a server.
목적: 브라우저의 기본 Push API를 통해 사용자가 푸시 알림을 직접 구독하도록 하고, 서버를 통해 푸시 알림을 보내는 데 사용할 수 있는 'PushSubscription' 개체를 반환합니다. - Context: A lower-level API provided by modern browsers, independent of any specific backend service like Firebase. Developers have to manage more details themselves, such as storing subscriptions and sending notifications.
컨텍스트: Firebase와 같은 특정 백엔드 서비스와 관계없이 최신 브라우저에서 제공되는 하위 수준 API입니다. 구독 저장, 알림 전송 등 더 자세한 내용은 개발자가 직접 관리해야 합니다. - Authentication: Also uses VAPID keys, but these need to be manually managed by the developer. The server must implement the Web Push Protocol to send notifications.
인증: VAPID 키도 사용하지만 개발자가 수동으로 관리해야 합니다. 서버는 알림을 보내려면 웹 푸시 프로토콜을 구현해야 합니다. - Usage: Suitable for developers who want more control over the push notification process, or who are not using Firebase and instead are building their own notification backend.
용도: 푸시 알림 프로세스를 더 효과적으로 제어하려는 개발자 또는 Firebase를 사용하지 않고 대신 자체 알림 백엔드를 구축하려는 개발자에게 적합합니다.
2. Implementation 구현
messaging.getToken:
Example:
import { getMessaging, getToken } from 'firebase/messaging';
const messaging = getMessaging();
getToken(messaging, { vapidKey: 'YOUR_PUBLIC_VAPID_KEY' })
.then((currentToken) => {
if (currentToken) {
console.log('FCM Token:', currentToken);
// Send the token to your server to register the device
} else {
console.log('No registration token available.');
}
})
.catch((error) => {
console.error('Error retrieving FCM token:', error);
});
How it works: 작동 방식:
- This method abstracts the subscription process and directly gives you an FCM token, which you send to your server for storage.
이 방법은 구독 프로세스를 추상화하고 저장을 위해 서버로 보내는 FCM 토큰을 직접 제공합니다. - Firebase handles the intricacies of token management, renewal, and messaging.
Firebase는 토큰 관리, 갱신, 메시징의 복잡한 작업을 처리합니다.
registration.pushManager.subscribe:
Example:
navigator.serviceWorker.ready.then((registration) => {
registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array('YOUR_PUBLIC_VAPID_KEY')
})
.then((subscription) => {
console.log('PushSubscription:', subscription);
// Send the subscription object to your server
})
.catch((error) => {
console.error('Failed to subscribe the user:', error);
});
});
function urlBase64ToUint8Array(base64String) {
const padding = '='.repeat((4 - base64String.length % 4) % 4);
const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
const rawData = window.atob(base64);
return Uint8Array.from([...rawData].map(char => char.charCodeAt(0)));
}
How it works: 작동 방식:
- This method gives you a PushSubscription object, which includes endpoint information and the keys required to send a push message.
이 방법은 푸시 메시지를 보내는 데 필요한 엔드포인트 정보와 키가 포함된 'PushSubscription' 개체를 제공합니다. - You must manage the subscription and notification sending process manually, usually through a backend service you implement.
일반적으로 구현하는 백엔드 서비스를 통해 구독 및 알림 전송 프로세스를 수동으로 관리해야 합니다.
3. Notification Sending 알림 보내기
With messaging.getToken:
Notifications are typically sent through Firebase’s servers. You just need to send the FCM token to Firebase, and it handles the rest.
알림은 일반적으로 Firebase 서버를 통해 전송됩니다. FCM 토큰을 Firebase로 보내기만 하면 나머지는 Firebase에서 처리됩니다.
With registration.pushManager.subscribe:
Notifications must be sent using a server that implements the Web Push Protocol. The server must handle encrypting the payload and sending it to the push service indicated by the subscription’s endpoint.
알림은 웹 푸시 프로토콜을 구현하는 서버를 사용하여 전송되어야 합니다. 서버는 페이로드 암호화를 처리하고 이를 구독 엔드포인트가 나타내는 푸시 서비스로 보내는 작업을 처리해야 합니다.
4. Ease of Use 사용 편의성
messaging.getToken:
Easier to implement if you are already using Firebase for your project. Firebase takes care of a lot of details, such as token rotation and ensuring that messages are delivered correctly.
이미 프로젝트에 Firebase를 사용하고 있다면 구현하기가 더 쉽습니다. Firebase는 토큰 순환, 메시지가 올바르게 전달되는지 확인하는 등 많은 세부정보를 처리합니다.
registration.pushManager.subscribe:
More flexible but requires more manual work. You need to set up your own infrastructure to handle subscriptions and send notifications.
더 유연하지만 더 많은 수동 작업이 필요합니다. 구독을 처리하고 알림을 보내려면 자체 인프라를 설정해야 합니다.
Summary 요약
- messaging.getToken is part of Firebase Cloud Messaging and is easier to use if you’re already in the Firebase ecosystem. It abstracts many details and simplifies the process of sending notifications.
messaging.getToken은 Firebase 클라우드 메시징의 일부이며 이미 Firebase 생태계에 있는 경우 사용하기가 더 쉽습니다. 많은 세부 정보를 추상화하고 알림 전송 프로세스를 단순화합니다. - registration.pushManager.subscribe is a lower-level API provided by browsers that offers more control but requires more manual management, including handling subscription storage and push message delivery on your server. registration.pushManager.subscribe는 더 많은 제어 기능을 제공하지만 서버의 구독 저장 및 푸시 메시지 전달 처리를 포함하여 더 많은 수동 관리가 필요한 브라우저에서 제공하는 하위 수준 API입니다.
'PWA' 카테고리의 다른 글
ChatGPT와 FCM 개발 - Token 저장 (1) | 2024.09.27 |
---|---|
ChatGPT와 FCM 개발 - getToken (4) | 2024.09.24 |
ChatGPT와 FCM 개발 - reboot (1) | 2024.09.23 |
ChatGPT와 FCM 개발 - 푸시 알림 보내기 (0) | 2024.09.23 |
ChatGPT와 FCM 개발 - sendMulticast (0) | 2024.09.23 |