ReactNative

[React Native] ios FCM으로 푸시알림 적용하기(3) - 연동 테스트

pocket.dev 2024. 7. 10. 17:25
반응형

* 참고: ios는 FCM 테스트가 에뮬레이터에서 안되고, 실제 기기에서만 확인 가능하다.

ios 실제 기기(아이폰)에서 프로젝트를 구동하는 방법은 다음 포스팅을 참고하면 된다: https://pocket-dev.tistory.com/35

 

[React Native] 실제 기기(아이폰) 연결해서 프로젝트 구동하기

1. npm 명령어 생성 후 실행- 시도: package.json > scripts에 ios-device 부분 추가"scripts": { "start": "react-native start", "android": "react-native run-android", "ios": "react-native run-ios --simulator \"iPhone SE (3rd generation)\"", "ios-

pocket-dev.tistory.com

 


 

 

react native 프로젝트에서 FCM 수신 가능한 환경을 만들어보자.

1. react-native-firebase 패키지 설치

npm install @react-native-firebase/app
npm install @react-native-firebase/messaging
cd ios && pod install

 

 

2. App.tsx/App.jsx에 코드 작성하기

import React, { useEffect } from 'react';
import messaging from '@react-native-firebase/messaging';

// 앱이 background/quit(종료) 상태인 경우 메시지를 받기 위함.
messaging().setBackgroundMessageHandler(async (remoteMessage: any) => {
  console.log('[Background Message] ', remoteMessage);
});

const requestUserPermission = async () => {
  const authorizationStatus = await messaging().requestPermission();

  if (authorizationStatus) {
    // Register App with FCM
    // await messaging().registerDeviceForRemoteMessages();

    // Generate FCM Token
    const token = await messaging().getToken();
    console.log('Authorization Status: ', authorizationStatus);
    console.log('token', token); // 이 값을 firebase 콘솔에서 fcm 알림 작성 시에 넣어줘야 한다.
  }
};

export default function App() {
  // ios는 유저에게 권한 요청이 필요하다.
  useEffect(() => {
    requestUserPermission();
  }, []);
  
  // 앱이 foreground(실행) 상태인 경우 메시지를 받기 위함.
  useEffect(() => {
    const unsubscribe = messaging().onMessage(async (remoteMessage) => {
      console.log('[Remote Message] ', JSON.stringify(remoteMessage));
    });
    return unsubscribe;
  }, []);
}

 

messaging().requestPermission()으로 받을 수 있는 authorizationStatus는 다음과 같다.

NOT_DETERMINED = -1   // 아직 결정되지 않음
DENIED = 0            // 거절
AUTHORIZED = 1        // 승인
PROVISIONAL = 2       // 임시로 권한 부여 (iOS >= 12)
EPHEMERAL = 3         // 제한된 시간 동안만 알림을 받을 수 있음 (iOS >= 14)

 

3. firebase 콘솔에서 메시지 보내기

왼쪽 메뉴 탭에서 실행 > Messaging 선택 후 오른쪽에서 첫 번째 캠페인 만들기 선택

 

Firebase 알림 메시지 선택

 

알림 제목, 알림 텍스트 작성 후에 오른쪽에 테스트 메시지 전송 버튼 클릭

'FCM 등록 토큰 추가' 부분에 react native 앱 구동시에 로그에 찍힌 token 값 넣고, 테스트 버튼 누르기


그러면 iOS 기기로 푸시 알림이 오는 것을 확인할 수 있다.

 

FCM으로 ios 푸시 알림 테스트 완료!

 

 


Node.js 프로젝트에서 FCM으로 푸시알림을 보내는 코드는 아래 글에 있다.

https://pocket-dev.tistory.com/42

 

[Node.js] FCM으로 푸시알림 보내는 API 작성하기

1. serviceAccountKey 발급받기firebase 프로젝트 콘솔 > 프로젝트 설정 > 서비스 계정 > '새 비공개 키 생성' 버튼 클릭다운받은 json파일을 Node.js 프로젝트 내에 넣어준다.  2. FCM 연결하기app.js// app.jsimpor

pocket-dev.tistory.com