제목
이벤트 스크립트 삽입 위치 질문 드립니다.
작성자
 데분데분
작성일
2022-04-26 14:32
조회
833
답변완료

안녕하세요! 이런 커뮤니티가 있다니 꼭 필요한 곳 같습니다!
앱개발 스터디를 하면서 직접 스크립트까지 심어보고 있습니다.
혹시 아래 내용도 알수 있을지 문의 드립니다. 

질문1. 수동 화면 추적 스크립트 삽입 위치(생명주기 관련)
- 앱 생명주기 중 viewDidLoad, viewWillAppear 등 많은 주기가 있습니다.
- 어느 단계에 화면 추적 스크립트를 삽입해야 해야하며, 왜 해당단계에 삽입해야하는지 궁금합니다.
- 추후 데이터 분석할때 어떻게 영향을 미치는지 궁금합니다.
- 혹시 분석 방법이나 상황에따라 다른 단계에도 삽입하는 경우가 있는지 궁금합니다.
질문2. 효율적인 주문완료(예시) 이벤트 기록 방법
- 예를 들어 쇼핑몰에서 주문완료(혹은 결제완료 등) 이벤트를 기록한다고 가정해보겠습니다. 3가지 방법이 있을 거 같습니다.
- [방법1] 클라에서 결제 후, 서버에서 주문완료 응답 값(코드)을 받았을때 클라에서 기록
- [방법2] 서버에서 파이어베이스 전용 결제완료 api를 만들어 내려주고, 클라에서는 해당 api 값을 받아 클라에서 기록.(결제관련 이벤트 모두 통합해서 처리)
- [방법3] 서버에서 주문완료 결과를 파이어베이스로 직접 보내기.(클라 관여 안함)
- 아니면 그 외 더 나은 방법이 있는지요. 어떻게 구성하는게 효율적이고 일반적인 방법인지 궁금합니다.

감사합니다!!

전체 2

  • 2022-04-26 15:16

    안녕하세요, 데분데분님!

    [질문1]
    먼저, 수동 화면 추적은 viewDidAppear 시점에서 수집하는 것이 구글의 공식 가이드입니다.
    그 자세한 이유는 나와있지 않지만 화면 추적에 사용하는 screen_view라는 이벤트는 개념적으로 "사용자에게 화면이 보여진 것을 추적"하는 것이 때문에, 사용자에게 화면이 보여진 이후 단계 중 가장 빨리 실행되는 viewDidAppear 시점이 가장 적합하다고 볼 수 있습니다. 예를 들어 앞선 시점인 viewDidLoad에서 수집할 경우에는 화면이 사용자에게 노출이 되기 전에 screen_view 이벤트가 수집되게 되는데, (엄청 짧은 순간이지만)사용자가 화면을 보기 전에 앱을 종료했다면 이 사용자는 화면을 보지도 못했는데도 불구하고 screen을 봤다는 데이터를 수집하게 됩니다. 따라서, 이는 개념적으로 적절하지 않습니다.
    - 가이드 참고 : https://firebase.google.com/docs/analytics/screenviews?hl=ko#manually_track_screens

    [질문2]
    파이어베이스 SDK는 식별값과 사용자 속성 값들을 클라이언트 저장소에 저장하여 각 전송에 포함시키고 있고, 이벤트도 발생할 때마다 전송하는게 아닌 저장소에 쌓아놓고 있다가 특정 기준을 충족시키면 배치 형태로 데이터를 전송하곤 합니다. 이러한 클라에서의 기본적인 로직들이 존재하므로 개인적으로는 클라이언트에서 데이터를 전송하는 방법을 추천드립니다. 그래서, 방법3은 추천드리진 않구요.

    방법1의 경우가 가장 일반적으로 사용되는 방법으로 보이고,
    방법2의 경우에는 주문완료 이후에 별도의 API를 통해 결제완료 정보를 추가로 서버에 요청하는 것으로 이해했는데, 사실 전자상거래의 대부분의 이벤트가 클라이언트에서 갖고 있는 정보로 전송이 가능하기 때문에, 별도의 API를 만들어야 하는 이유가 있지 않으면 방법 1로 진행하시는게 좋을것 같습니다. ( 이 부분은 개념적으로 저도 완전히 이해하지 못했기 때문에 방법1과 방법2 중에서 효율적인 방식으로 선택하시면 될 것 같습니다. )


    • 2022-04-26 17:05

      상세하고 빠른 답변 감사합니다! 답답했는데 속이 시원하네요 🙂
      위 답변을 바탕으로 조금더 구글링을 해봤습니다.(자료 공유 차원)
      [질문1] viewdidload은 최초 1회만 초기화로 호출하지만, viewdidapper는 화면 불러올때마다 호출한다고 합니다. 그렇다면 viewdidapper가 더 적절할 거 같다는 생각이 듭니다. 그 외에도 말씀주신것 처럼 화면 그려지는 타이밍이 맞는 viewdidapper가 정확할 거 같네요.
      [질문2] 클라 저장소에서 배치로 전송하는지 처음알았네요! 지식공유 감사합니다 참고하겠습니다.