useEffect(() => {
if (!isapp) return;
const listener = (event: any) => {
const { data, type } = JSON.parse(event.data);
switch (type) {
case 'FCM_TOKEN':
postFCMToken({ token: data }).then(() => {
alert(data);
});
}
};
document.addEventListener('message', listener);
window.addEventListener('message', listener);
return () => {
document.removeEventListener('message', listener);
window.removeEventListener('message', listener);
};
}, [isapp]);
기존 코드입니다. postFCMToken은 axios를 이용해서 서버에 FCM토큰 값을 전다하는 함수입니다. document.addEventListener에는 함수가 등록이 안되는 걸까?
경우의 수
document.addEventListener에 listener가 등록이 안되었다.
document.addEventListener에 함수가 등록이 안되었다.
post메소드에 문제가 있다.
결론은, CORS문제였다. 다른 api는 잘 되는데 이 api만, 휴대폰에서만 안되는 이유가 바로 이것이었다. 알림 api만 서버 분리를 한 까닭에, 알림 서버에 아직 CORS 설정이 안되어 있어 Network Error가 발생한 것이었다.

서버에 곧장 전달하여 CORS문제를 말씀드렸다.
실제 앱에서 디버깅 하는 것은 쉽지 않다. 에러 console을 찍어보지 못하고, 개발 서버에 배포 > alert메시지로 에러 확인을 해야 한다. 배포하는데만 한 번에 3분 가까이 걸리고, 또 디버깅을 하려면 또 3분을 기다려야 한다. 그래서, 우선 디버깅이 가장 편하고 익숙한 웹에서 디버깅을 해보자.