하이브리드 앱에서 뒤로가기 동작에 대해 이슈가 있었다. 모바일 팀에서 기존에 마지막 페이지를 체크하는 로직이 referrer를 기반으로 되어 있었는데 SPA의 경우 history.state API를 이용하고 이 경우 SPA 내에서 페이지 이동 시 referrer가 남지 않는다.
[fem] App Webview 뒤로가기 이슈 정리
1. React에서 페이지 라우팅시 document.referrer 없음
- 하지만 라우팅시 window.history.state에 키값이 업데이트됨 (pushState 사용)
결론: App Webview에서 이전페이지정보 확인 조건문 수정&추가
if (document.referrer || history.state)
웹배포: 4월3주전 어느날 (허문용과장님 기타 화면이슈 수정시)
앱배포: 4월3주쯤 브랜드이슈에 포함 (강제업데이트 정책적용)
2. 테스트서버 mnew에서 tfrem으로 페이지이동시 document.referrer 빈값으로 변경됨 (운영에서는 정상)
- 운영과 테스트서버 차이점 확인 필요
1) <https://mnew>, <http://tfem>
2) ...
결론: 오훈 확인 (미완료)
요부분 스테이지 환경의 m.encar > fem로 진입할때 https > http로의 이동이라 document.referrer가 없는 경우가 있습니다.
replace해도 state가 생김
const ua = useSsrUserAgent();
const { isKakao, isApp } = ua();
const timeoutRef = useRef();
const handleCheckPrevPageClose = () => {
if (isKakao) {
closeKakaoInAppBrowser();
return;
}
history.goBack();
timeoutRef.current = setTimeout(() => {
if (isApp) {
mobileAppBridge().destroyWebView();
return;
}
window.close();
}, 300);
};
const handleHistoryBack = useCallback(() => {
if (timeoutRef.current) {
clearTimeout(timeoutRef.current);
}
}, []);
useEffect(() => {
window.addEventListener('beforeunload', handleHistoryBack);
return () => {
window.removeEventListener('beforeunload', handleHistoryBack);
};
}, [handleHistoryBack]);
useEffect(() => () => handleHistoryBack(), [handleHistoryBack]);
beforeunload를 이용하여 네트워크가 느린경우 close가 실행되는 이슈를 처리