티스토리 뷰

반응형

beforinstallpropt라는 wepAPI를 사용하여 클릭시에 홈화면에 추가 할 수 있도록 했다. 다만 ios에서는 불가능하고 안드로이드만 가능하다

 

useEffect에서 이벤트를 생성한다

  let installPrompt = null;
  
  useEffect(() => {
    console.log('Listening for Install prompt');
    window.addEventListener('beforeinstallprompt', (e) => {
      // For older browsers
      e.preventDefault();
      console.log('Install Prompt fired');
      installPrompt = e;
      // See if the app is already installed, in that case, do nothing
      if (
        (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches) ||
        window.navigator.standalone === true
      ) {
        return false;
      }
    });
  }, []);

 

클릭시에 실행할 함수

const installApp = async () => {
    if (!installPrompt) {
      alert('이미 다운로드 했습니다')
      return false;
    }

    installPrompt.prompt();

    let outcome = await installPrompt.userChoice;

    if (outcome.outcome == 'accepted') {
      console.log('App Installed');

    } else {
      console.log('App not installed');
    }
    // Remove the event reference
    installPrompt = null;
  };

참고 : https://blog.anam.co/progressive-web-apps-with-create-react-app/

반응형

'Nextjs' 카테고리의 다른 글

next js에서 pwa 다운로드 버튼 생성하기  (0) 2020.08.07
next js에 pwa 적용하기  (0) 2020.08.07
next + pwa 설정  (0) 2020.05.28
Next js 튜토리얼 8편 : 배포  (0) 2019.10.10
Next js 튜토리얼 7편 : 컴포넌트 스타일링  (0) 2019.10.05
댓글