인앱 업데이트 표시
플레이스토어 출시 후, 앱 버전을 올리게 되면 사용자는 앱을 업데이트해야 원활한 앱 사용이 가능하다.
하지만 기본적으로는 앱내에서 업데이트를 알려주지 않기 때문에, 플레이스토어에서 직접 확인하지 않는 한 업데이트 내역을 알아차리긴 힘들다.
여기서 구글의 인앱 업데이트를 전송할 수 있도록 하는 라이브러리가 있다. AppUpdateManager이다.
이걸 활용하면 간단하게 앱 내에서 업데이트를 확인하고 그에 따라 알림을 띄워 볼 수 있다.
// update check (app - build.gradle)
implementation 'com.google.android.play:app-update-ktx:2.1.0'
// 앱 시작 시 앱 버전을 체크함 (activity or fragment)
private fun checkNewVersion() {
// 업데이트를 확인할 매니저 객체
val appUpdateManager = AppUpdateManagerFactory.create(requireActivity())
homeViewModel.checkNewVersion(appUpdateManager)
}
// viewModel
fun checkNewVersion(appUpdateManager: AppUpdateManager) {
runCatching {
viewModelScope.launch(Dispatchers.IO) {
// 매니저의 업데이트 정보를 가져옴
val info = appUpdateManager.appUpdateInfo
// 정보를 가져오는데 성공하면
info.addOnSuccessListener { updateInfo ->
// 업데이트가 존재하고, 업데이트가 즉시 가능하면
if (updateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE &&
updateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
) {
// 앱 업데이트가 있음
_isUpdateAvailable.postValue(true)
return@addOnSuccessListener
}
// 앱 업데이트가 없음
_isUpdateAvailable.postValue(false)
}.addOnCanceledListener {
_isUpdateAvailable.postValue(false)
}
}
}.onFailure {
_isUpdateAvailable.postValue(false)
}
}
versionCode.observe(viewLifecycleOwner) { isUpdateAvailable ->
// 같으면 아무동작안하고 리턴
// 업데이트가 있다면 다이얼로그 실행해서 플레이스토어로 갈 수 있도록 유도
if (isUpdateAvailable) {
runUpdateDialog()
}
}
private fun runUpdateDialog() {
AlertDialog.Builder(requireActivity())
.setTitle(getString(R.string.new_update))
.setMessage(getString(R.string.new_update_available))
.setPositiveButton(getString(R.string.yes)) { _, _ ->
// 예 버튼을 누르면 플레이스토어로 이동
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(getString(R.string.playstore_url))
)
)
}.setNegativeButton(getString(R.string.no)) { _, _ -> }
.create()
.show()
}
'Android' 카테고리의 다른 글
| [Android] Dagger (basic) (1) | 2024.01.29 |
|---|---|
| [Android] Compose (basic) (1) | 2024.01.15 |
| fragment & lifecycle (0) | 2023.09.15 |
| [Android] Serializable - Parcelable (0) | 2023.09.01 |
| [Android] ActionBar? ToolBar! (0) | 2023.08.11 |