앱 서비스 런칭 후에는 추후 유지보수가 가장 필요하다. 유지보수가 정상적으로 유/무에 따라 앱을 사용하는 유저들은 앱을 지속적으로 계속 사용할 수도 있고, 이탈할 수도 있다.
개발자 -> 유저의 일방적인 단방향 의견 소통 방식을 막기 위해 오래 전부터 Google에서는 Firebase를 활용한 Analytics 와 Crashlytics 라는 기능을 제공하고 있다.
** 이 글에서는 Firebase Analytics 와 Crashlytics의 간단한 설명과 적용 방법을 소개하고 있으며, 자세한 글은 끝 부분에 참고 사이트를 참고부탁드립니다.
Analytics
Firebase 전체 기능에 통합되어 Firebase SDK를 사용하여 정의할 수 있는 최대 500개의 고유한 이벤트에 대한 무제한 보고를 제공합니다.
앱 및 웹 어플리케이션의 사용자 동작 및 이벤트에 대한 데이터를 수집하고 분석하여 성능을 파악하고 개선할 수 있도록 도움주는 Google의 분석 도구이다.
예를 들어, 실 서비스에서는 사용자가 무슨 기능을 이용 많이 하는지 클릭 이벤트에 대해 코드를 넣어서 추적할 수 있다. 더 나아가서 사용자 그룹을 세분화하여 특정 그룹의 행동을 분석하거나 A/B 테스트라고도 하는 두 가지 컨텐츠를 비교하여 더 높은 관심을 보이는 버전을 추출할 수도 있다.
Crashlytics
Crashlytics는 앱의 충돌 및 오류를 모니터링하고 추적하여 해당 문제를 신속하게 식별하고 해결할 수 있도록 도와주는 Google의 오류 보고 도구이다.
Crashlytics는 실 서비스에 매우 유용한 기능이라고 생각한다. 앱에서 발생한 강제 종료 및 기타 오류의 상세정보를 확인할 수 있으며, 해당 문제가 발생한 디바이스 정보 및 버전, 사용자 정보를 파악할 수 있다. 그리고 Crashlytics 적용한 앱에서 사용자가 앱을 이용하면서 예기치 않은 오류(ex. 비정상 종료) 발생 시 Slack 또는 메일로 자동 알림을 수신할 수 있으며, 빠르게 대응할 수 있다는 장점도 있다.
설정 방법
파이어베이스 콘솔에 들어가 로그인 및 프로젝트 생성을 한다.
SHA-1 추출하는 방법은 여기서 확인할 수 있다.
프로젝트 생성 후 google-service.json 파일은 프로젝트 app 폴더 내부에 추가한다.
파이어베이스 SDK를 Android 프로젝트 내에 추가한다.
여기가지가 프로젝트 기본 설정 끝 ~
Firebase Analytics 활성화하기
로그이벤트 보내는 방법은 bundle 또는 AnalyticsKt에서 제공하는 확장함수로 보내는 방법 총 2가지가 있다.
1. bundle
MainActivity.kt
private lateinit var firebaseAnalytics: FirebaseAnalytics
override fun onCreate(savedInstanceState: Bundle?) {
firebaseAnalytics = Firebase.analytics
val bundle = Bundle().apply {
putString("screen_name", "{screenName}")
}
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, bundle)
}
2. AnalyticsKt에서 제공하는 확장함수
MainActivity.kt
private lateinit var firebaseAnalytics: FirebaseAnalytics
override fun onCreate(savedInstanceState: Bundle?) {
firebaseAnalytics = Firebase.analytics
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
param(FirebaseAnalytics.Param.ITEM_ID, id)
param(FirebaseAnalytics.Param.ITEM_NAME, name)
param(FirebaseAnalytics.Param.CONTENT_TYPE, "image")
}
}
FirebaseAnalytics.Event.SELECT_ITEM : 이벤트 이름
FirebaseAnalytics.Param.ITEM_ID : 이벤트에 담길 정보의 Key 값
id : 이벤트에 담길 정보의 Value 값
실제 이벤트 추적
Analytics는 이 페이지에서 조회할 수 있다.
추가한 이벤트뿐만 아니라 자동으로 등록되는 이벤트도 많으니 참고할 수 있다.
screen_view의 상세정보를 조회하면 더 많은 정보를 조회할 수 있으니 참고하도록 하자.
Firebase Crashlytics 활성화하기
SDK등록 누락된 부분 이 페이지에서 확인 가능하니, 설명은 SKIP!
비정상 종료 발생
val crashButton = Button(this)
crashButton.text = "Test Crash"
crashButton.setOnClickListener {
throw RuntimeException("Test Crash") // Force a crash
}
addContentView(crashButton, ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT))
해당 코드 실행시 Crashlytics 페이지에서 비정상 종료 보고서를 확인할 수 있다.
오류코드와 어느 디바이스에서 추가적으로 개발자가 직접 ID와 같은 특정 정보를 넣어서 오류 정보를 받을 수 있으며, 모든 비정상 종료를 모두 보여줌으로써 QA를 진행할때 엄청난 도움이 된다.
참고 사이트
[Android/kotlin] 구글 Firebase Crashlytics 사용하기
[Android] Firebase - Analytics 및 Crashlytics를 활용해 앱 사용자에 대한 데이터를 수집해보자.
나는 네가 왜 오류를 냈는지 알고 있다 - Crashlytics 기능, 어디까지 써봤니?