Settings
- React Native 0.73.4
- @react-native-firebase 20.0.0
Problem
FCM 으로 앱 push 알림을 구현하기 위해 아래와 같이 사용하고 있었는데
useEffect(() => {
if (!messaging().isDeviceRegisteredForRemoteMessages) {
await messaging().registerDeviceForRemoteMessages();
}
if (Platform.OS === 'ios') {
await messaging().getAPNSToken();
}
const token = await messaging().getToken();
updateDeviceToken(token);
}, []);
simulator 에서 어느 순간 FCM 이 수신되지 않고
getAPNSToken 은 null 을 반환하면서
FCM token 가져올 때 다음과 같은 에러가 발생하는 문제가 있었다.
The operation couldn’t be completed. No APNS token specified before fetching FCM Token
참고로, 실 기기에서는 문제가 없었으며, 권한 등의 문제는 없었다.
Solve
- 아래 코드처럼 AppDelegate.mm 에 코드를 추가
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
[FIRMessaging messaging].APNSToken = deviceToken; // 추가
[RNCPushNotificationIOS didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
- info.plist 에서 FirebaseAppDelegateProxyEnabled 값을 조정
- 앱 삭제 후 재설치
- metro 종료 후 재실행
위처럼 구글 검색해서 찾아본 것들을 시도해봤는데 똑같이 문제가 발생해서 계속 검색하다보니,
어떤 글에서 APNs Token 발급이 안 되는 경우 iOS 문제인 경우가 있다면서 껐다 켜보라는 답변이 있어서
시뮬레이터를 껐다 켜보니...
정상적으로 APNs Token 과 FCM Token 이 발급되고, FCM 도 수신됐다...