FCM Push(Firebase 기반) 알림 메시지 만들기

1. Firebase 회원가입 필요

   - 도움말 : 안드로이드 스튜디오 상단 > Tool > Firebase > Cloud Messaging

   - 참조 : https://hwihyeon.tistory.com/4

 

Google firebase_안드로이드 사용방법

1. 구글 로그인 후 아래 사이트 접속  - https://firebase.google.com/?hl=ko Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase...

hwihyeon.tistory.com

 

2. 1번 사항 완료 후 dependecies 설정 추가

   - build.gradle (Module: app)

implementation 'com.google.firebase:firebase-messaging:23.0.2'

 

3. 서비스 클래스 생성

   - 원활한 관리를 위해 service 패키지 생성 후 파일 생성

   - service > FcmService

package com.hhk.myapplication.service;

import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;

import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.hhk.myapplication.R;

public class FcmService extends FirebaseMessagingService {

    private static String CHANNEL_ID    = "tset_app_fcm";
    private static String CHANEL_NAME   = "tset_app_fcm";

    @Override
    public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        NotificationManagerCompat fcmMsgManager = NotificationManagerCompat.from(getApplicationContext());

        NotificationCompat.Builder fcmBuilder = null;

        if (fcmMsgManager.getNotificationChannel(CHANNEL_ID) == null) {
            //CHANNEL_ID : 임의의 알림 id, CHANEL_NAME : 임의의 알림 이름, NotificationManager.IMPORTANCE_DEFAULT : 중요도
            //IMPORTANCE_HIGH :긴급 (알림음이 울리며 헤드업 알림으로 표시), IMPORTANCE_DEFAULT : 높음 (알림음이 울림)
            //IMPORTANCE_LOW : 중간 (알림음이 없음, IMPORTANCE_MIN : 낮음 (알림음이 없고 상태줄에 표시되지 않음)
            //안드로이드 API 참조 : https://developer.android.com/guide/topics/ui/notifiers/notifications?hl=ko#Templates
            NotificationChannel fcmChannel = new NotificationChannel(CHANNEL_ID, CHANEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
            fcmMsgManager.createNotificationChannel(fcmChannel);

        }

        fcmBuilder = new NotificationCompat.Builder(getApplicationContext(), CHANNEL_ID);

        //제목 설정
        String title = remoteMessage.getNotification().getTitle();
        //내용 설정
        String body = remoteMessage.getNotification().getBody();

        //아래 세개 항목은 필수...?
        fcmBuilder.setContentTitle(title);
        fcmBuilder.setContentText(body);
        fcmBuilder.setSmallIcon(R.drawable.ic_launcher_background);

        Notification notification = fcmBuilder.build();

        fcmMsgManager.notify(1, notification);

    }

}

 

4. FCM Push 를 수신받을 권한 설정

   - manifests

<uses-permission android:name="android.permission.INTERNET" />

 

5. service 권한 설정

   - manifests > <application> 내부에 생성

<service
    android:name=".service.FcmService"
    android:stopWithTask="false">
    
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
    
</service>

 

6. Firebase에서 Push 메시지 전송

   - 1) Cloud Messaging > Send your first message 클릭

 

   - 2) 데이터 입력 후 다음 버튼 클릭

 

   - 3) 전송할 그룹 설정 후 다음 버튼 클릭

 

   - 4) 전송 시간 설정 (예약 가능, 지금으로 설정)

   -    별다른 특이사항 없을 시 바로 검토 클릭 (나머지는 선택사항)

   - 5) 대상에 전송 타겟팅 확인 후 게시 버튼 클릭

 

7. 실행 예시