Google Analytics는 사용자가 어떻게 앱을 사용하고 있는지를 파악할 수 있는 도구다. 이 SDK는 수많은 이벤트와 사용자 속성을 자동으로 캡처하여 비지니스에 필요한 내용을 측정할 수 있다. 캡처된 데이터는 Firebase Console Dashboard에서 확인할 수 있는데, 여기서 현재 앱을 사용하고 있는 사용자의 수, 위치 등과 같은 데이터 요약 정보를 얻을 수 있다. 분석을 통해 사용자의 행동을 파악할 수 있기 때문에 앱 마케팅에 설득력을 더할 수 있고 고부가가치 사용자를 유도하는데도 효과적으로 사용될 수 있다. 커스텀으로 분석을 수행하거나 BigQuery에 분석한 데이터를 연결하여 대용량 혹은 여러 데이터 소스를 결합하는 것과 같은 복잡한 분석이 가능하다. 자세한 내용은 Google Analytics Document를 확인하자.
프로젝트를 추가시에 기본으로 Analytics를 설정하도록 안내해준다. 다음을 참고해서 프로젝트를 추가하자.
https://firebase.google.com/docs/analytics/get-started?platform=ios
이벤트는 사용자 행동, 시스템 이벤트, 오류 등 앱에서 발생하는 상황을 파악하는 수단이다. Google Analytics는 몇 가지 이벤트를 자동으로 로깅하며 별도의 코드 없이 이벤트를 수신할 수 있다. 데이터를 추가로 수집해야 하는 경우, 이벤트 유형을 최대 500가지나 만들 수 있고 각각 이벤트의 총 분량에는 제한이 없다. 참고로 이벤트 이름은 대소문자를 구분하니 주의하자.
FirebaseApp 인스턴스를 구성한 후에는 logEvent() 메서드를 사용하여 이벤트 로깅을 시작할 수 있다. 자 그럼 어떤 이벤트를 사용할까? 막막한 이 질문을 또 구글이 해결해 준다. 처음 시작하는 개발자를 위해 다양한 유형의 앱에서 공통적으로 사용되는 여러 가지 추천 이벤트를 정리해놨다. 적합한 이벤트를 선택해서 미리 정의된 매개변수를 사용해서 로깅하면 언제든 사용할 수 있다.
추천 이벤트 중에 사용자가 콘텐츠를 선택할 때를 로깅하는 이벤트를 추가해보자.
해당 문서에 들어가보면, 사용자가 특정한 타입의 컨텐트를 선택했을 때 로깅하는 이벤트라는 설명이 나와있다. 그리고 이 이벤트가 인기있는 컨텐츠가 무엇인지를 알아차리는데 도움을 주고 그래서 앱의 컨텐츠를 분류하는데 도움을 준다고 나와있다. 이 문서에는 swift에서 사용할 수 있는 사전 정의된 파라미터 및 이벤트가 쭉 나열되어 있다. 필요한 이벤트와 파라미터를 찾아서 사용해보자. 그러면 Dashboard에서 훨씬 더 직관적으로 데이터를 확인할 수 있다.
아래와 같이 이벤트의 이름, 파라미터에 각각의 해당하는 값을 전달하면 된다. logEvent() 메소드를 호출하면 자동완성으로 사전 정의된 이벤트를 찾을 수도 있다.
Analytics.logEvent(AnalyticsEventSelectContent, parameters: [
AnalyticsParameterItemID: "id-\(title!)",
AnalyticsParameterItemName: title!,
AnalyticsParameterContentType: "cont"
])
이 코드를 사용자가 해당 컨텐츠를 선택하는 코드에 넣으면 된다. 예를 들어, 사용자가 테이블뷰에 있는 한 셀을 선택함으로 기록이 된다고 하면 tableView.didSelect(:indexPath)에 넣으면 되겠다. 그리고 파라미터에는 사용자의 아이디, 컨텐츠의 제목, 그리고 타입들을 설정해서 더 구체적인 정보를 Analytics로 전달할 수 있다. 다음은 RxSwift를 이용한 사용법이다.
Observable.zip(
tableView.rx.modelSelected(Post.self),
tableView.rx.itemSelected,
resultSelector: { ($0, $1)})
.bind { [unowned self] (post, indexPath) in
self.tableView.deselectRow(at: indexPath, animated: false)
Analytics.logEvent(AnalyticsEventSelectContent, parameters: [
AnalyticsParameterItemID: "id-\(post.postID)",
AnalyticsParameterItemName: post.caption,
AnalyticsParameterContentType: "post"
])
}
.disposed(by: disposeBag)
해당하는 이벤트가 없다면 대소문자를 잘 구분해 (40자 안으로) 문자열을 입력해 사용자 정의 이벤트를 만들 수도 있다. 이벤트만 필요하고 파라미터가 필요없다면 nil로 설정할 수 있다. 텍스트 파라미터는 10개까지 숫자 파라미터는 40개까지 사용 가능하다고 하니 신중하게 필요한 곳에 써보자.
Analytics.logEvent("share_image", parameters: [
"name": name as NSObject,
"full_text": text as NSObject,
])
Google Analytics는 일반적으로 앱에서 취합한 정보를 약 한 시간마다 일괄 업로드한다. 하지만 디버깅 모드를 구현하면 실시간으로 업데이트가 된다. 이 점을 잘 감안해서 원하는 디버깅 환경을 구축하도록 하자.
사용자 속성은 언어 환경설정, 지리적 위치와 같이 사용자층을 나눈 세그먼트를 기술하고자 개발자가 정의하는 속성이다. 사용자 속성을 사용하면 앱의 잠재고객을 정의할 수 있다. Google Analytics는 몇 가지 사용자 속성을 자동으로 로깅하고 별도의 코드없이 사용할 수 있다. 이 역시 데이터를 추가로 수집해야 하는 경우 최대 25개까지 설정할 수 있으며 대소문자를 구분한다.
앱에서 adSupport 프레임워크에 연결하는 경우에만 연령, 성별, 관심분야 속성이 자동으로 수집된다.
현재 앱을 사용하고 있는 사용자를 설명하는 Google Analytics 사용자 속성을 설정해보자.
Analytics.setUserProperty(food, forName: "favorite_food")
너무나도 유용한 SDK다. 구현 자체는 난이도가 거의 없는 수준이지만 어떤 정보를 누구에게 어디에서 얻을 것인가는 고민이 많이 필요한 지점이다. 위의 사용자 행동을 추적하는 것 외에 다른 많은 분석이 구글 애널리틱스를 통해 가능하다. 필요한 지점이 있다면 적극 활용해보자.