안드로이드에서 2024년 6월 20일 예정된 레거시 FCM API 중단에 대한 영향 및 대응 방법 (Java 코드 포함)
2024년 6월 20일 Google은 레거시 Firebase Cloud Messaging (FCM) API를 중단한다고 발표했습니다. 이는 안드로이드 앱에서 푸시 알림을 전송하는 데 사용되는 기존 API가 더 이상 작동하지 않음을 의미합니다.
영향:
이 중단으로 인해 레거시 FCM API를 사용하는 모든 안드로이드 앱은 푸시 알림을 전송하지 못하게 됩니다. 이는 앱 사용자 경험에 심각한 영향을 미칠 수 있습니다.
대응 방법:
이 중단에 대비하여 모든 안드로이드 앱 개발자는 FCM v1 프로토콜로 업그레이드해야 합니다. FCM v1은 레거시 API보다 향상된 기능과 보안을 제공하는 최신 버전입니다.
업그레이드 방법:
FCM v1로 업그레이드하는 방법은 다음과 같습니다.
- Firebase 콘솔에서 프로젝트를 엽니다.
- Cloud Messaging 탭으로 이동합니다.
- FCM v1으로 업그레이드 버튼을 클릭합니다.
- 지침에 따라 프로젝트를 업그레이드합니다.
업그레이드 후 코드 업데이트:
FCM v1로 업그레이드한 후에는 앱 코드를 업데이트하여 FCM v1 API를 사용하도록 해야 합니다. 주요 변경 사항은 다음과 같습니다.
- FCM 메시지를 전송하는 데 사용하는 API 호출을 업데이트해야 합니다.
- 알림 수신 방식을 업데이트해야 합니다.
Java 코드 예시:
다음은 레거시 FCM API와 FCM v1 API를 사용하여 안드로이드 앱에 푸시 알림을 전송하는 방법을 보여주는 Java 코드 예시입니다.
레거시 FCM API:
import com.google.firebase.iid.FirebaseInstanceId;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
Log.d("FCM", "Refreshed token: " + token);
// This token should be sent to your server to associate it with the device
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d("FCM", "Message received: " + remoteMessage.getData());
// Handle the message here
}
}
FCM v1 API:
import com.google.firebase.messaging.FirebaseMessaging;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(String token) {
Log.d("FCM", "Refreshed token: " + token);
FirebaseMessaging.getInstance().subscribeToTopic(token, "my_topic");
// This token should be sent to your server to associate it with the device
}
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
Log.d("FCM", "Message received: " + remoteMessage.getData());
// Handle the message here
}
}
참고:
안드로이드에서 FCM v1 API를 사용하여 푸시 알림 전송하는 예제 코드 (Java)
필수 조건:
- Firebase 프로젝트 및 앱 설정
- FCM v1로 업그레이드된 안드로이드 앱
- Java 개발 환경
코드:
import com.google.firebase.messaging.FirebaseMessaging;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TOPIC = "my_topic";
@Override
public void onNewToken(String token) {
Log.d("FCM", "Refreshed token: " + token);
subscribeToTopic(token);
}
private void subscribeToTopic(String token) {
FirebaseMessaging.getInstance().subscribeToTopic(token, TOPIC)
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Log.w("FCM", "Failed to subscribe to topic: " + task.getException());
}
});
}
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
Log.d("FCM", "Message received: " + remoteMessage.getData());
// Handle the message here
// You can get the message data from remoteMessage.getData()
// You can also get the notification message from remoteMessage.getNotification()
// To handle the message in a background thread, you can use a WorkManager or a Coroutine
}
}
설명:
MyFirebaseMessagingService
클래스는 FCM에서 수신하는 메시지를 처리하는 서비스입니다.onNewToken
메서드는 새 디바이스 토큰이 생성될 때마다 호출됩니다. 이 메서드는 토큰을 주제에 구독해야 합니다.subscribeToTopic
메서드는 토큰을 주제에 구독합니다.onMessageReceived
메서드는 앱이 백그라운드에 있을 때 수신되는 메시지를 처리합니다.- 메시지 데이터는
remoteMessage.getData()
에서 가져올 수 있습니다. - 알림 메시지는
remoteMessage.getNotification()
에서 가져올 수 있습니다.
- 위 코드는 예시일 뿐이며 실제 앱에서 사용하려면 업데이트해야 할 수도 있습니다.
FCM 대체 방법
FCM v1은 레거시 FCM API의 후속 버전입니다. 향상된 기능과 보안을 제공하며, 현재 FCM을 사용하는 대부분의 앱에 적합한 대체 방법입니다.
FCM v1로 업그레이드하는 방법:
FCM v1 API 사용 방법:
위에서 제공한 예제 코드를 참조하십시오.
다른 푸시 알림 서비스:
FCM 외에도 사용할 수 있는 다양한 푸시 알림 서비스가 있습니다. 다음은 몇 가지 인기 있는 옵션입니다:
- Amazon SNS: Amazon Web Services에서 제공하는 푸시 알림 서비스입니다.
- OneSignal: 다양한 플랫폼을 지원하는 무료 푸시 알림 서비스입니다.
- Urban Airship: 기업 규모의 앱에 적합한 기능이 풍부한 푸시 알림 서비스입니다.
FCM 대체 서비스를 선택할 때 고려해야 할 사항:
- 지원되는 플랫폼: 앱에서 지원하는 모든 플랫폼을 지원하는 서비스를 선택해야 합니다.
- 가격: 무료 서비스와 유료 서비스가 있습니다. 사용 요구 사항에 맞는 가격 책정 모델을 선택하십시오.
- 기능: 일부 서비스는 다른 서비스보다 더 많은 기능을 제공합니다. 앱에 필요한 기능을 제공하는 서비스를 선택하십시오.
- 사용 편의성: 서비스가 사용하기 쉽고 문서가 잘 작성되었는지 확인하십시오.
java android firebase