개별 유저에게 Push Notification 을 발송하기 위해서는
서버에서는 DB에
user fcm token 매칭이 필요하며
client 에서는 OS에게 Push 권한을 요청해서 권한을 부여받아야 하며
fcm token 을 서버에 전송해야한다
iOS
Capability → Push Notification 추가
Android
'com.google.gms.google-services' 를 Gradle에 추가해야 한다고 하는데 Firebase 를 이미 적용하면서 적용된 부분. Push 를 위해서 다시 추가할 필요 없음.
buildscript {
ext {
buildToolsVersion = "29.0.2"
minSdkVersion = 16
compileSdkVersion = 29
targetSdkVersion = 29
googlePlayServicesVersion = "17.0.0" 👈👈👈👈👈
}
repositories {
google()
jcenter()
}
dependencies {
classpath('com.android.tools.build:gradle:4.1.1')
classpath 'com.google.gms:google-services:4.3.4'
}
}
Shell
복사
npm module 설치
npm i -s @react-native-firebase/app @react-native-firebase/messaging
Shell
복사
dependency 오류가 나는데. —legacy ~~ 옵션을 주니 일단 진행은 됨
ios 는 pod install
android 는 now sync 하고 실행하면
Error: You attempted to use a firebase module that's not installed on your Android project by calling firebase.messaging().
Ensure you have:
1) imported the 'io.invertase.firebase.messaging.ReactNativeFirebaseMessagingPackage' module in your 'MainApplication.java' file.
2) Added the 'new ReactNativeFirebaseMessagingPackage()' line inside of the RN 'getPackages()' method list.
Shell
복사
권한 요청 및 설정
async function requestUserPermission() {
const authStatus = await messaging().requestPermission();
const enabled =
authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
authStatus === messaging.AuthorizationStatus.PROVISIONAL;
if (enabled) {
console.log('Authorization status:', authStatus);
} else {
Alert.alert("알림 권한을 켜주세요", "상품이 재입고되면 푸시 알림으로 알려드려요.", [
{
text: "아니요",
onPress: () => { },
style: "cancel"
},
{
text: "설정하러 가기", onPress: () => {
Linking.openSettings(); 👈 앱 설정으로 감 iOS, Android 각각 알아서 동작
}
},
],
{ cancelable: false }
);
}
}
Shell
복사
npm install --save @react-native-community/push-notification-ios
JSON
복사
pod install