안드로이드에서 2024년 6월 20일 예정된 레거시 FCM API 중단에 대한 영향 및 대응 방법 (Java 코드 포함)

2024-07-27

2024년 6월 20일 Google은 레거시 Firebase Cloud Messaging (FCM) API를 중단한다고 발표했습니다. 이는 안드로이드 앱에서 푸시 알림을 전송하는 데 사용되는 기존 API가 더 이상 작동하지 않음을 의미합니다.

영향:

이 중단으로 인해 레거시 FCM API를 사용하는 모든 안드로이드 앱은 푸시 알림을 전송하지 못하게 됩니다. 이는 앱 사용자 경험에 심각한 영향을 미칠 수 있습니다.

대응 방법:

이 중단에 대비하여 모든 안드로이드 앱 개발자는 FCM v1 프로토콜로 업그레이드해야 합니다. FCM v1은 레거시 API보다 향상된 기능과 보안을 제공하는 최신 버전입니다.

업그레이드 방법:

FCM v1로 업그레이드하는 방법은 다음과 같습니다.

  1. Firebase 콘솔에서 프로젝트를 엽니다.
  2. Cloud Messaging 탭으로 이동합니다.
  3. FCM v1으로 업그레이드 버튼을 클릭합니다.
  4. 지침에 따라 프로젝트를 업그레이드합니다.

업그레이드 후 코드 업데이트:

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
    }
}

설명:

  1. MyFirebaseMessagingService 클래스는 FCM에서 수신하는 메시지를 처리하는 서비스입니다.
  2. onNewToken 메서드는 새 디바이스 토큰이 생성될 때마다 호출됩니다. 이 메서드는 토큰을 주제에 구독해야 합니다.
  3. subscribeToTopic 메서드는 토큰을 주제에 구독합니다.
  4. onMessageReceived 메서드는 앱이 백그라운드에 있을 때 수신되는 메시지를 처리합니다.
  5. 메시지 데이터는 remoteMessage.getData()에서 가져올 수 있습니다.
  6. 알림 메시지는 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



안드로이드, 플러터, 파이어베이스와 관련된 reCAPTCHA Enterprise의 심각한 보안 취약점 프로그래밍 해설

2023년 11월 14일, reCAPTCHA Enterprise에 심각한 보안 취약점이 발견되었습니다. 공격자는 이 취약점을 악용하여 사용자 계정을 탈취하고 민감한 정보에 액세스할 수 있습니다. 이 취약점은 안드로이드...


Android, React Native, Gradle에서 'androidx.core:core:1.15.0-alpha01' 종속성으로 인해 ':app' 실행 실패 문제 해결 방법

Android, React Native 및 Gradle을 사용하는 프로젝트에서 ':app' 실행을 시도하면 다음과 같은 오류 메시지가 나타납니다.이 오류는 'androidx. core:core:1.15. 0-alpha01' 종속성이 프로젝트에 추가되고 해당 버전이 아직 공식적으로 출시되지 않았기 때문에 발생합니다...


2024년 6월 종료 예정! Chrome에서 더 이상 작동하지 않는 로그인 방식 [해결 방법 포함]

2024년 6월 24일 이후 Google Chrome M115 이상 버전에서 Cross-Origin Redirect Sign-In (CORS) 방식의 로그인이 더 이상 지원되지 않습니다. 이는 Android 및 Firebase 기반 앱에 영향을 미칠 수 있으며...


안드로이드, 플러터, 파이어베이스와 관련된 reCAPTCHA Enterprise의 심각한 보안 취약점 프로그래밍 해설

2023년 11월 14일, reCAPTCHA Enterprise에 심각한 보안 취약점이 발견되었습니다. 공격자는 이 취약점을 악용하여 사용자 계정을 탈취하고 민감한 정보에 액세스할 수 있습니다. 이 취약점은 안드로이드...


2024년 6월 종료 예정! Chrome에서 더 이상 작동하지 않는 로그인 방식 [해결 방법 포함]

2024년 6월 24일 이후 Google Chrome M115 이상 버전에서 Cross-Origin Redirect Sign-In (CORS) 방식의 로그인이 더 이상 지원되지 않습니다. 이는 Android 및 Firebase 기반 앱에 영향을 미칠 수 있으며...



java android firebase

안드로이드 소프트 키보드 프로그래밍: 프로그램 방식으로 소프트 키보드 닫기/숨기기

문제: 안드로이드 앱 개발 중 EditText에 포커스가 맞춰지면 자동으로 소프트 키보드가 나타나는데, 특정 조건에서 이를 강제로 닫거나 숨기고 싶은 경우가 있습니다.해결 방법:안드로이드 프레임워크는 소프트 키보드를 관리하기 위한 다양한 방법을 제공합니다


안드로이드 에뮬레이터가 느린 이유와 속도 향상 방법

느린 에뮬레이터의 일반적인 원인:시스템 리소스 부족: 에뮬레이터는 CPU, RAM 및 디스크 공간을 포함하여 시스템 리소스를 많이 사용합니다. 시스템 리소스가 부족하면 에뮬레이터가 느리게 실행되거나 응답하지 않을 수 있습니다


안드로이드에서 px, dip, dp, sp의 차이점에 대한 설명

안드로이드 개발에서 사용되는 단위인 px, dip, dp, sp는 화면 크기와 해상도가 다양한 안드로이드 기기에서 일관된 UI를 구현하기 위해 매우 중요한 역할을 합니다. 각 단위의 특징과 사용 용도에 대해 자세히 알아보겠습니다


안드로이드 애플리케이션에서 기존 데이터베이스 사용하기 (Java, Android, Eclipse)

필수 조건:안드로이드 스튜디오 (Eclipse에서 개발하는 경우 해당 플러그인 설치 필요)Java 개발 환경기존 데이터베이스 (SQLite, MySQL, Oracle 등)단계:프로젝트 설정:안드로이드 스튜디오에서 새로운 프로젝트를 만들거나 기존 프로젝트를 엽니다


안드로이드 UserManager.isUserAGoat()의 적절한 사용 사례?

Android의 UserManager 클래스에는 isUserAGoat()이라는 이름의 독특한 메서드가 존재합니다. 이 메서드는 사용자가 염소인지 여부를 판단하는 것처럼 보이지만, 실제로는 유머러스한 이스터 에그 역할을 합니다