[react] react google analytics 연동

공효은·2020년 12월 23일
3

react

목록 보기
1/11
post-thumbnail

2020.12.23 수요일

처음으로 Velog에 글 하나 올려본다.
이제 공부한건 여기에다가 싸악 정리해야지

지금 회사에서 부동산 관련 웹 개발 중인데 구글 애널릭틱스를 연동하라고 한다.
구글 애널릭틱스 이거 진짜 신기하다. 코드에 추적 ID 를 심어버리니까 지금 내 사이트에 방문한 사람, 실시간 가장 인기있는 페이지 이런게 다뜨더라고 대박이다.

첨들어 보는거라서 엄청 겁났는데 좋은 라이브러리가 있었따 역시..👍 세상에 대단한 사람이 많다. 나도 언젠가 이런 라이브러리를 만들어서 사람들에게 도움이 되는 개발을 하고싶다.

사실 이미 연동해봤는데 정리도 하고 싶고 무엇보다 제대로 이해 한것 같지가 않아서 정리해보려고한다.

시작 👀

1. 우선 구글애널릭티스에 들어가서 계정 하나 생성해본다.

계정추가를 해주는데
⚠️1단계 계정설정 에서 특이 사항이 있어서 쓴다.

대략 요론 느낌인데 새로운 버전이 나왔나보다.. Google 애널릭티스 4 라는것
근데 react-ga는 유니버셜 애널릭틱스 버전을 지원하는것 같다 그래서
고급 옵션 들어가서 유니버셜 애널릭틱스 속성만 만들기 체크해줬다
그리고 저 url 입력하는거는 처음에 http://localhost:3000 이거는 안되더니만
그냥 아무거나 입력하니까 되더라 http://www.test.com 이렇게 ㅎㅎ

무튼 이렇게 열심히 만들다 보면 tracking ID 라는게 나오는데 그것을 코드에 넣어주면 된다. 신통방통하다.

2. 그리고 코드 Tracking ID 넣어준다.

어떻게?

useEffect(() => {
  ReactGa.initialize("My Tracking ID");
  ReactGA.set({page: window.location.pathname});
  ReactGa.pageview(window.location.pathname + window.location.search);
 }, []);

이렇게 해주고 나서 google 대시보드에서 확인해 보니까... 먼가 아리꼬리하다
왜냐면 실시간 페이지 이동을 감지를 못하고 첫페이지만 감지하고 아무리 열심히 돌아다녀도 조금있다가 비활성화 되더라...왜지?

3. history.listen (need more study❗️)

 ReactGA.initialize(process.env.REACT_APP_TRACKING_ID, { debug: true });
  const history = createBrowserHistory();
  history.listen((location: any) => {
    ReactGA.set({ page: location.pathname }); // Update the user's current page
    ReactGA.pageview(location.pathname); // Record a pageview for the given page
  });

  return (
    <ThemeProvider theme={theme}>
      <Router history={history}>

요롷게 해주니까 실시간 페이지이동 감지가 되더라구
경로가 변경이 될때마다 react-ga라이브러리를 사용해야 하기때문에 history.listion 을 사용하였다.
이왕하는거 history 객체 공부해볼까나 흠 요거는 나중에 따로 정리해서 올려보겠어😎

흠 일단 initialize는 초기화 해주는 메소드
set은 page라는 변수에 현재 url 세팅해주는거 같은데 정확한 의미는 잘모르겠다
한 번 빼봤는데 별 변화가 없네? 좀 더 찾아봐야겠다.
pageview는 사용자가 어떤 페이지를 보고있는지 추적해 준다.

4. 모달도 인식할 수 있을까?

  useEffect(() => {
    ReactGA.modalview("로그인 모달");
  }, []);

모달도 이렇게 적용해 주니까 모달 띄운걸 인식한다. Nice!☺️

  • 클릭 이벤트 감지해서 ga 대시보드로 전달 할 수 있는데 그거는 클라이언트 요청사항 있으면 반영해야겠다.
profile
잼나게 코딩하면서 살고 싶어요 ^O^/

1개의 댓글

comment-user-thumbnail
2021년 11월 24일

3번에 있는 코드를 app.jsx에넣으신건가요? index.jsx에넣으신건가요? 아니면 매페이지마다 넣으신건가요?
모달 같은경우도 모달컴포넌트내에 저코드를 넣은건지 아니면 최상단에 코드를 넣은건지 궁금합니다!
클릭이벤트를 대시보드로 전달하는법도 궁금합니다!

답글 달기