Apple is Apple
Published 2023. 11. 24. 09:22
[Android] 인앱 업데이트 Android

인앱 업데이트 표시

플레이스토어 출시 후, 앱 버전을 올리게 되면 사용자는 앱을 업데이트해야 원활한 앱 사용이 가능하다.

하지만 기본적으로는 앱내에서 업데이트를 알려주지 않기 때문에, 플레이스토어에서 직접 확인하지 않는 한 업데이트 내역을 알아차리긴 힘들다. 

여기서 구글의 인앱 업데이트를 전송할 수 있도록 하는 라이브러리가 있다. 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
profile

Apple is Apple

@mjjjjjj