์ค๋์ ํ์ด์ด๋ฒ ์ด์ค์ remote config๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค.
ํ์๋ ์ฑ์ ๊ผญ ์ ๋ฐ์ดํธ๋ฅผ ํด์ผํ๋ ๊ฒฝ์ฐ์ ์ด ๊ฒ์ ์ฌ์ฉํ๊ณ ์๋ค.
์ผ๋จ Firebase์ Remote Config๋ ์ฑ์์ ๋ณ๋์ ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์์๋ ์ฑ์ ๋์์ด๋ ๋ชจ์์ ๋ณ๊ฒฝํ ์ ์๋ ํด๋ผ์ฐ๋ ์๋น์ค์ด๋ค.
๋ง์ฝ ํ์์ ๊ฐ์ ๋ฒ์ ์ฒดํฌ๋ฅผ ํ์ฌ ์ฑ์ ๊ฐ์ ์ ๋ฐ์ดํธํ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๋ ์ ์ ํ์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ณด๊ฒ ๋ค.
์ผ๋จ firebase์ ๋ด ์ฑ์ด ์ฐ๊ฒฐ๋์ด ์๋ค๋ ์ ์ ํ์ ์งํํ๊ฒ ๋ค.
(์ถํ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์์ฑํ ์์ )
1. gradle์ implementation ์ํจ๋ค.
implementation 'com.google.firebase:firebase-core:21.1.0'
implementation 'com.google.firebase:firebase-config-ktx:21.1.1'
2. Firebase Remote config instance ํธ์ถํ๋ค.
val firebaseRemoteConfig = FirebaseRemoteConfig.getInstance()
3. listener๋ฅผ ๋จ๋ค.
firebaseRemoteConfig.fetch(0/*๋ช์ด์ ํ ๋ฒ ํธ์ถํ ๊ฒ์ธ์ง.*/).addOnCompleteListener { task ->
if (task.isSuccessful) {
firebaseRemoteConfig.fetchAndActivate()
val nowVersion = funGetAppVersion() // Version from gradle(app)
val firebaseVersion = firebaseRemoteConfig.getString("version") // Version from firebase (firebase ์์ ์ค์ ํ key ๋ฅผ ๊ฐ์ ธ์ด)
val firebaseUpdate = firebaseRemoteConfig.getString("isUpdate") // from firebase (firebase ์์ ์ค์ ํ key ๋ฅผ ๊ฐ์ ธ์ด)
if (nowVersion == firebaseVersion || firebaseVersion.isBlank() || firebaseUpdate != "update") {
launchApp()
return@addOnCompleteListener
} else if (nowVersion != firebaseVersion && firebaseUpdate == "true") {
// ์ฑ ๋ฒ์ ์ด ์๋ก ๋ค๋ฅธ ๊ฒฝ์ฐ ๋๊ณ , ์
๋ฐ์ดํธ๊ฐ ํ์๋ฉด ํ๋ ์ด์คํ ์ด๋ก ์ด๋
openGoPlayStoreDialog()
return@addOnCompleteListener
}
} else {
// remote config ํธ์ถ์ด ์คํจ ํ์ ๋์๋ ์คํ์ ์ํฌ ์ ์๋๋ก ํ์๋ค.
launchApp()
}
}
โ
private fun funGetAppVersion(): String {
// gradle(app)์์ ์ค์ ํ versionName ์ฝ์ด์ค๋ ๊ฒ
val packageManager = this.packageManager
return packageManager.getPackageInfo(
this.packageName, PackageManager.GET_ACTIVITIES
).versionName
}
4. firebase remote config์ ๋ค์ด๊ฐ์ ์์ ์ค์ ํ key ๊ฐ์ ์ธํ ํด์ค๋ค.
Firebase Remote Config | Customize your app on the fly
์ด๋ ๊ฒ ํ๋ฉด ์ค์ ์ด ์ฑ์ ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
๊ฐ๋จํ์ง๋ง ์ฒ์์ ํ์ ๋ key ๊ฐ์ ๋ค๋ฅด๊ฒ ์ ์ด ์ ๋๋ก ๋์ํ์ง ์์๊ณ
์ด์ ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ฑฐํด์ผํ๋ ์ํฉ์์ ๊น๋นกํ๊ณ ์ ๊ฑฐํ์ง ์์ผ๋ฉด ํฐ ๋ญํจ๋ฅผ ๋ณด๊ธฐ์ ๋ฐฐํฌ์ ์ฌ์ฌ, ๊ฐ์ ์ ๋ฐ์ดํธ ์ ๊ฑฐ๋ฅผ ํ ๋ ์ ๊ฒฝ์ ์ ์จ์ค์ผํ๋ค.
'Development > Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DI - Hilt์ ๊ดํ์ฌ (0) | 2023.07.10 |
---|---|
Thread์ ๊ดํ์ฌ ๋ง ์ ์ด๋ณด๊ธฐ (0) | 2023.04.11 |
Databinding ์์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ค์ ๊ฐ๊ณตํ ๊น? ๐ฝ (1) | 2022.09.18 |
๐ฆย Databinding์ ์ฐ๋ฉด์ - 2 (0) | 2022.09.08 |
๐ฆย Databinding์ ์ฐ๋ฉด์ - 1 (0) | 2022.09.08 |