ReactNative 푸시메세지 설정
ReactNative에서 푸시메세지 토큰 수집 및 수신을 위해 필요한 설정 가이드입니다.
푸시알림 권한 확인
iOS permission 요청시 확인되는 authorizationStatus 값. -1 = NOT_DETERMINED: 애플리케이션에 대한 권한이 아직 요청되지 않았습니다 0 = DENIED: 사용자가 알림 권한을 거부했습니다 1 = AUTHORIZED: 사용자가 권한을 수락했고 활성화되었습니다. 2 = PROVISIONAL: 임시 권한이 부여되었습니다. 3 = EPHEMERAL: 앱이 제한된 시간 동안 알림을 만들 수 있는 권한이 있습니다. 앱 클립에 사용됩니다.
import messaging from '@react-native-firebase/messaging';
import {Platform, NativeModules, PermissionsAndroid} from 'react-native';
const Main = () => {
const firebaseMessaging = messaging();
useEffect(() => {
Platform.OS === 'android'
? androidRequestPermission()
: iosRequestPermission();
}, []);
// ios 사용자에게 알림권한 요청
const iosRequestPermission = async () => {
try {
const authorizationStatus = await messaging().requestPermission();
// 알림 권한이 허용되면 authorizationStatus 값에 대한 안내는 상단에 작성되어 있습니다.
// authorizationStatus 값이 AUTHORIZED 일 때,
if (authorizationStatus === 1) {
const apnsToken = await firebaseMessaging.getAPNSToken();
// APNs 토큰이 등록되어 있지 않으면 getToken() 함수가 실패합니다.
// FCM토큰을 가져오기 전에 APNs 토큰이 등록되어있는지 먼저 확인합니다.
if (apnsToken) {
const fcmToken = await firebaseMessaging.getToken();
// 와이즈트래커 SDK가 토큰을 수집합니다.
NativeModules.DotReactBridge.setPushToken(fcmToken);
}
} else {
console.log('알림권한 비 활성화:');
}
} catch (error) {
console.log('ios error::', error);
}
};
// Android 사용자에게 알림권한 요청
const androidRequestPermission = async () => {
const authorizationStatus = await messaging().requestPermission();
console.log('authorizationStatus:', authorizationStatus);
try {
const fcmToken = await firebaseMessaging.getToken();
if (Platform.OS === 'android') {
console.log('get android FCM Token:', fcmToken);
if (Platform.Version >= 33) {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,
/*
* 알림허용이 denied 일때, 알림 허용에 대한 재안내와
* 알림수신에 대한 요청을 다시 할 수 있는 내용 작성가능.
* */
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log('Android 13이상 , 알림권한 허용.');
if (fcmToken) {
//토큰 수집
NativeModules.DotReactBridge.setPushToken(fcmToken);
}
}
}
// API 레벨 32 이하일 때
try {
if (fcmToken) {
//토큰 수집
NativeModules.DotReactBridge.setPushToken(fcmToken);
}
} catch (e) {
console.log('android token API level 32 이하 error:', e);
}
}
} catch (error) {
console.log('Android error:', error);
}
};
...
}Device Token 수집
푸시메시지 클릭 측정
푸시 수신동의
🎉 축하합니다!
Last updated
Was this helpful?