Я внедряю новый AppUpdateManager , который был анонсирован в Google I / O 2019, и по какой-то причине он не работает каждый раз.
Я могу подтвердить, что он показывался один или два раза, но когда я позже попытался протестировать его на другом устройстве, он просто не работал.
Как я тестировал AppUpdateManager, я установил приложение с устаревшим кодом версии и убедился, что это тот же тип сборки, который был опубликован в производстве.
Вот как я это реализовал:
private val appUpdateManager by lazy { AppUpdateManagerFactory.create(this) }
private val appUpdateInfo: Task<AppUpdateInfo> by lazy { appUpdateManager.appUpdateInfo }
- Тогда я бы запустил это в onCreate
private fun checkIfAnUpdateExists() {
appUpdateInfo.addOnCompleteListener {
if (it.result?.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
&& it.result?.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE) == true) {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo.result,
AppUpdateType.FLEXIBLE,
this,
REQUEST_CODE_UPDATE_APP
)
}
}
}
- Тогда я бы реализовал onActivityResult следующим образом:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_UPDATE_APP) {
val snackBar = Snackbar.make(dl_main_app,
getString(R.string.an_update_has_been_downloaded),
Snackbar.LENGTH_INDEFINITE)
snackBar.setAction(getString(R.string.Restart)) {
run {
appUpdateManager.completeUpdate()
}
}
snackBar.show()
}
}
}
Полагаю, вопросов по этому вопросу пока нет, было бы очень полезно, если бы кто-нибудь смог мне помочь.