백그라운드 앱에 테스트 메시지 보내기

FCM을 시작하기 위해 앱이 백그라운드 상태일 때 알림 작성기에서 개발 기기로 테스트 알림 메시지를 전송하는 가장 단순한 사용 사례부터 살펴보겠습니다. 이 페이지에는 설정부터 검증까지 이 작업을 수행하는 모든 단계가 제시되어 있으므로, FCM용 Android 클라이언트 앱 설정을 마친 경우 일부 단계는 이미 완료된 상태일 수 있습니다.

SDK 설정

이 섹션에서 설명하는 작업은 앱에서 다른 Firebase 기능을 사용 설정한 경우 이미 완료되었을 수 있습니다.

기본 요건

  • 다음을 실행하는 기기:
    • Android 4.1(API 수준 16, Jelly Bean) 이상
    • Google Play 서비스 15.0.0 이상
  • Android 스튜디오 최신 버전

Android 스튜디오 프로젝트가 준비되지 않은 경우 빠른 시작 샘플 중 하나를 다운로드하여 Firebase 기능을 시험해 볼 수 있습니다. 빠른 시작을 사용하는 경우 프로젝트의 모듈 폴더(일반적으로 app/)에 있는 build.gradle 파일의 애플리케이션 ID를 확인하세요. 다음 단계에서 이 패키지 이름이 필요합니다.

앱에 Firebase 추가

앱에 Firebase를 추가할 차례입니다. 이를 위해 Firebase 프로젝트 및 앱의 Firebase 구성 파일이 필요합니다.

Firebase 프로젝트를 만드는 방법은 다음과 같습니다.

  1. Firebase 콘솔로 이동합니다.

  2. 프로젝트 추가를 클릭한 다음 프로젝트 이름을 선택하거나 입력합니다.

    • 앱에 연결된 기존 Google 프로젝트가 있으면 프로젝트 이름 드롭다운 메뉴에서 프로젝트를 선택합니다.
    • 기존 Google 프로젝트가 없으면 새 프로젝트 이름을 입력합니다.
  3. (선택사항) 프로젝트 ID를 수정합니다.

    Firebase는 Firebase 프로젝트에 자동으로 고유한 ID를 할당합니다. 이 식별자는 공개적으로 표시되는 Firebase 서비스에 나타납니다. 예를 들면 다음과 같습니다.

    • 기본 실시간 데이터베이스 URL — your-project-id.firebaseio.com
    • 기본 Cloud Storage 버킷 이름 — your-project-id.appspot.com
    • 기본 호스팅 하위 도메인 — your-project-id.firebaseapp.com
  4. Firebase 콘솔에서 나머지 설정 단계를 따른 다음 프로젝트 만들기(또는 기존 Google 프로젝트를 사용 중인 경우 Firebase 추가)를 클릭합니다.

Firebase에서 Firebase 프로젝트용 리소스를 자동으로 프로비저닝합니다. 이 프로세스는 일반적으로 몇 분 정도 걸립니다. 과정이 완료되면 Firebase 콘솔에서 Firebase 프로젝트의 개요 페이지로 이동하게 됩니다.

이제 프로젝트가 준비되었으므로 Android 앱을 추가할 수 있습니다.

  1. Android 앱에 Firebase 추가를 클릭하고 설정 단계를 따릅니다. 기존 Google 프로젝트를 가져오면 이 단계가 자동으로 이루어지므로 구성 파일만 다운로드하면 됩니다.

  2. 메시지가 표시되면 앱의 패키지 이름을 입력합니다. 앱에서 사용하는 패키지 이름을 입력해야 합니다. 이 설정은 Firebase 프로젝트에 앱을 추가할 때만 가능합니다.

  3. 앱에 Firebase Android 구성 파일을 추가합니다.

    1. google-services.json 다운로드를 클릭하여 Firebase Android 구성 파일(google-services.json)을 가져옵니다.

      언제든지 다시 Firebase Android 구성 파일을 다운로드할 수 있습니다.

    2. 구성 파일을 루트 수준 build.gradle 파일과 같은 디렉토리로 이동합니다.

  4. 초기화 코드를 추가한 후 앱을 실행하여 Firebase를 성공적으로 설치했다는 확인을 Firebase 콘솔에 보냅니다.

SDK 추가

프로젝트 중 하나에 Firebase 라이브러리를 통합하려는 경우 몇 가지 기본적인 작업을 수행하여 Android 스튜디오 프로젝트를 준비해야 합니다. 앱에 Firebase를 추가하면서 이 단계를 이미 완료했을 수 있습니다.

우선 루트 수준 build.gradle 파일에 규칙을 추가하여 google-services 플러그인 및 Google의 Maven 저장소를 포함합니다.

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.2.0' // google-services plugin
    }
}

allprojects {
    // ...
    repositories {
        google() // Google's Maven repository
        // ...
    }
}

이제 모듈의 Gradle 파일(일반적으로 app/build.gradle) 하단에 apply plugin 줄을 추가하여 Gradle 플러그인을 사용 설정합니다.

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-core:16.0.7'
  implementation 'com.google.firebase:firebase-messaging:17.3.4'
  // Getting a "Could not find" error? Make sure you have
  // added the Google maven respository to your root build.gradle
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

또한 사용할 Firebase SDK에 대한 종속 항목을 추가해야 합니다. 우선 Firebase용 Google 애널리틱스 기능을 제공하는 com.google.firebase:firebase-core부터 시작하는 것이 좋습니다. 사용 가능한 라이브러리 목록을 참조하세요.

등록 토큰 액세스

특정 기기로 메시지를 보내려면 기기의 등록 토큰을 알아야 합니다. 알림 콘솔의 필드에 토큰을 입력해야 이 가이드를 마칠 수 있으므로 토큰을 검색한 후 복사하거나 안전하게 저장해 두세요.

앱을 처음 시작할 때 FCM SDK에서 클라이언트 앱 인스턴스용 등록 토큰을 생성합니다. 기기 하나를 타겟팅하거나 기기 그룹을 만들려면 FirebaseMessagingService를 확장하고 onNewToken을 재정의하여 이 토큰에 액세스해야 합니다.

이 섹션에서는 토큰을 검색하고 토큰 변경을 모니터링하는 방법을 설명합니다. 토큰은 최초 시작 후에 회전될 수 있으므로 마지막으로 업데이트된 등록 토큰을 검색하는 것이 좋습니다.

다음과 같은 경우에 등록 토큰이 변경될 수 있습니다.

  • 앱에서 인스턴스 ID 삭제
  • 새 기기에서 앱 복원
  • 사용자가 앱 삭제/재설치
  • 사용자가 앱 데이터 소거

현재 등록 토큰 검색

현재 토큰을 검색하려면 FirebaseInstanceId.getInstance().getInstanceId()를 호출합니다.

자바
Android

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin
Android

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

토큰 생성 모니터링

새 토큰이 생성될 때마다 onNewToken 콜백이 호출됩니다.

자바
Android

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
@Override
public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token);
}

Kotlin
Android

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String?) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token)
}

토큰이 확보되었으면 앱 서버로 전송하고 원하는 방법으로 저장할 수 있습니다. API에 대한 자세한 내용은 Instance ID API 참조를 확인하세요.

테스트 알림 메시지 보내기

  1. 타겟 기기에 앱을 설치하고 실행합니다.

  2. 앱을 기기에서 백그라운드 상태로 만듭니다.

  3. 알림 작성기를 열고 새 메시지를 선택합니다.

  4. 메시지 본문을 입력합니다.

  5. 기기에서 테스트를 선택합니다.

  6. FCM 등록 토큰에 추가 필드에 이 가이드의 앞 섹션에서 확인한 등록 토큰을 입력합니다.

  7. 테스트를 클릭합니다.

테스트를 클릭하면 타겟팅된 클라이언트 기기(백그라운드 상태의 앱 포함) 작업 표시줄에 알림이 표시됩니다.

앱으로 전달된 메시지의 통계를 파악하려면, 전송되어 iOS 및 Android 기기에서 열린 메시지 수와 Android 앱의 '노출수'(사용자에게 표시된 알림) 데이터가 기록된 FCM 보고 대시보드를 확인합니다.

다음 단계

포그라운드 앱에 메시지 전송

백그라운드 앱에 알림 메시지를 보내는 데 성공했으면 Android 앱에서 메시지 수신을 참조하여 포그라운드 앱에 전송하는 방법을 알아보세요.

알림 메시지 이외의 고급 기능

앱에 단순한 알림 메시지 이외에 더 많은 고급 기능을 추가하려면 다음을 참조하세요.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.