제가 작성한 tistory글의 마이그레이션입니다.
이번 포스팅에서는 Firebase의 기능들을 설정할 예정이다.
Firebase 기능들 중에
이 정도 기능에 대해 검토하고 적용할 예정이다.
구분 | 설명 | 설정여부 |
---|---|---|
Analytics | 유지보수를 위해 무언가를 판단할 때 근거가 될 것, 그렇기 때문에 꼭 필요 | O |
Crashlytic | 유지보수를 위해 무언가를 판단할 때 근거가 될 것, 그렇기 때문에 꼭 필요 | O |
Performance | 로컬 데이터를 사용하기 때문에 크게 필요할 것 같지는 않음 | O |
TestLab | 로컬 데이터가 존재해야 test하는데 의미가 있을 것, 그러나 testLab에서 진행하는 디바이스는 로컬 데이터가 없으므로 Skip | ▵ |
Remote Config | A/B test를 위해 필요 | O |
Distribution | 테스터가 많지 않아 필요하지는 않지만 이번에 써보자 | ▵ |
Cloud Messaging | 사용자에게 message를 전달할 기능이 없음, 다음 버전에 고민 | X |
val analytics: FirebaseAnalytics by lazy {
FirebaseAnalytics.getInstance(this)
}
// ...
analytics.setCurrentScreen(activity, screenName, null)
Fabric.with(this, Crashlytics())
// ...
Crashlytics.getInstance().crash()
FirebasePerformance.getInstance().newTrace(SAVE_IMAGE_FEATURE)
// ...
imageTrace.start()
// ...
imageTrace.stop()
val remoteConfig = FirebaseRemoteConfig.getInstance().apply {
setDefaults(R.xml.remote_config_defaults)
}
fun fetchRemoteConfig(setConfig: (() -> Unit)? = null) {
remoteConfig.fetch(0L).addOnCompleteListener {
if (it.isSuccessful) {
Log.d(javaClass.simpleName, "remoteConfig is successful")
remoteConfig.activateFetched()
} else {
Log.d(javaClass.simpleName, "remoteConfig is failed")
}
setConfig?.invoke()
}
}