본문 바로가기
플러터(flutter)

플러터에서 Firebase Message 사용하기 for Android

by 기계공학 주인장 2024. 1. 26.
반응형

플러터에서 Firebase Message를 사용하기 위해선 사전에 여러 셋업이 필요합니다.

 

특히 셋업 방법이 Android와 iOS가 다른데요.

 

이번 포스팅에서는 Android에서 Firebase Message를 세팅하는 방법에 대해 알아보겠습니다.

 

  • Firebase Message 패키지 설치하기
  • Firebase Message 사용 준비하기
  • Firebase Message 알림 테스트
  • Firebase Message 프로젝트 설정 및 테스트

Firebase Message 패키지 설치하기

다음과 같은 커맨드를 플러터 프로젝트에서 실시합니다.

 

flutter pub add firebase_messaging

 

Android는 위 커맨드 실시만으로 패키지 설치 및 세팅이 끝납니다.

 

(iOS보다 훨씬 간단하고 쉽죠 ㅠㅠ)


Firebase Message 사용 준비하기

Firebase Message를 사용하기 위해선 기기에서 푸시 알람 설정과 Firebase Message의 토큰이 필요합니다.

 

먼저 Push Notification 권한을 요구할 화면을 선정합니다.

 

(해당 화면은 반드시 StatefulWidget이어야 합니다.)

 

그리고 해당 화면에서 다음과 같이 정의합니다. 

 

class _ChatScreenState extends State<ChatScreen> {
	// initState()에서는 async를 할 수 없기 때문에 별도의 함수 생성
    void setupPushNotifications() async {
        final fcm = FirebaseMessaging.instance;
      	// Push Notification 권한 요구 - 반드시 Token을 얻기 전에 실시해야함
        await fcm.requestPermission();
        
	    // Firebase Message 토큰 얻기
        final fcmToken = await fcm.getToken();
        print(fcmToken);
    }

	
    @override
    void initState() {
        super.initState();
        // 화면을 열었을 때 한 번만 실행되도록 initState() 안에서 실시
        setupPushNotifications();
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(

        ~~~
    }
}

 

 

위 코드가 성공하면 다음과 같은 토큰 정보가 Log에 출력되는 것을 확인할 수 있습니다.

 


Firebase Message 프로젝트 설정 및 테스트

이제 Firebase의 Message에 들어가서 프로젝트를 설정합니다.

 

처음 하는 분들이라면 다음과 같이 나오는데

 

"Firebase 알림 메시지"를 선택합니다.

 

 

그리고 알림 작성을 통해 테스트를 할 수 있습니다.

 

다음 그림과 같이 설정하고 

 

 

오른쪽에 보이는 "테스트 메시지 전송"을 클릭합니다.

 

거기에 위 코드에서 출력한 로그에 있는 토큰을 복사하여 붙여 넣습니다.

 

 

그리고 테스트를 누르면 다음과 같이 Push 알림이 온 것을 확인할 수 있습니다.

 

 

이렇게 토큰을 사용하면 특정 단말기에만 Push 알림을 보내서 테스트할 수 있습니다.

 

다음 과정인 타깃에서 앱 선택에 따라 단체 Push 알림 메시지도 보낼 수 있습니다.

 


특정 주제로 Firebase Message 구독하기

특정 주제로 Firebase Message를 구독할 수도 있습니다.

 

다음과 같이 코드를 수정하고

 

class _ChatScreenState extends State<ChatScreen> {
	// initState()에서는 async를 할 수 없기 때문에 별도의 함수 생성
    void setupPushNotifications() async {
        final fcm = FirebaseMessaging.instance;
      	// Push Notification 권한 요구 - 반드시 Token을 얻기 전에 실시해야함
        await fcm.requestPermission();
        
	    // 토큰 필요할 때 사용하기
        // final fcmToken = await fcm.getToken();
        // print("token: $fcmToken");

		// chat이라는 주제의 message를 구독한다
        fcm.subscribeToTopic('chat');
    }

	
    @override
    void initState() {
        super.initState();
        // 화면을 열었을 때 한 번만 실행되도록 initState() 안에서 실시
        setupPushNotifications();
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(

        ~~~
    }
}

 

플러터 프로젝트를 다시 실행합니다.

 

그리고 Firebase Message에서 다음과 같이 지정합니다.

 

 

메시지 주제에 위 코드에서 지정한 'chat'을 입력합니다.

 

그리고 특별한 설정을 하지 않고 그냥 보내면 됩니다.

 

 

참고로 이렇게 '게시'를 통해서 Message를 보내는 것은 조금 느립니다.

 

토큰을 통해 개별로 보낸 것과 달리 Message를 수신할 때까지몇 분 정도 소요됩니다.

 

결과는 다음과 같이 똑같습니다.

 


이외에도 다른 Firebase의 SDK를 사용하는 방법들을 게시했습니다!

 

Firebase SDK 설치하는 방법

 

플러터에서 Firebase SDK 사용하기 (SDK 설치하기)

이전 포스팅에서 플러터에서 Rest API를 사용하여 Firebase Realtime Database를 사용하는 방법에 대해 소개했습니다. 플러터에서 Rest API로 Firebase Realtime Database 사용하기 이번에는 플러터에서 Rest API로 Fir

android-developer.tistory.com

 

 

Firebase SDK를 사용해서 로그인 인증(Auth) 처리하기

 

플러터에서 Firebase SDK를 사용해서 로그인 인증하기

플러터에서 Firebase를 설치 및 사용하는 방법은 이전 포스팅을 참조하시길 바랍니다. 플러터에서 Firebase SDK 사용하기 (SDK 설치하기) 이전 포스팅에서 플러터에서 Rest API를 사용하여 Firebase Realtime D

android-developer.tistory.com

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글