Привет! Выпейте кофе ☕ и узнайте, как реализовать обновления в приложении с помощью API, предоставленного Google Play.
Настраивать
Первое, что нужно сделать, это добавить зависимость для этой функции. Итак, откройте :app/build.gradle.kts
и добавьте эту зависимость.
dependencies { implementation("com.google.android.play:app-update-ktx:2.1.0") }
Проверьте наличие обновлений
Для этого мы создадим новую функцию, которая будет использовать AppUpdateManager
. Откройте MainActivity.kt
и начнем писать код.
Давайте создадим updateType
и AppUpdateManager
, которые будут инициализированы позже в функции onCreate
.
private lateinit var appUpdateManager: AppUpdateManager private var updateType = AppUpdateType.IMMEDIATE
Теперь создайте функцию checkForUpdates
и начнем с создания ActivityResultLauncher
. Это будет использоваться для запуска потока обновлений в приложении.
fun checkForUpdates() { val activityResultLauncher = registerForActivityResult( ActivityResultContracts.StartIntentSenderForResult() ) { result -> if (result.resultCode != RESULT_OK) { Log.d("Update result", "Update flow failed! Result code: $result.resultCode"); } } // TODO: ("Create the listener") }
После этого мы должны создать прослушиватель, чтобы проверить, доступно ли и разрешено ли обновление. Если да, мы начнем процесс обновления. Это обрабатывает обновления как FLEXIBLE
, так и IMMEDIATE
.
fun checkForUpdates() { // ... appUpdateManager.appUpdateInfo.addOnSuccessListener { appUpdateInfo -> val isAvailable = appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE val isAllowed = when (updateType) { AppUpdateType.IMMEDIATE -> appUpdateInfo.isImmediateUpdateAllowed AppUpdateType.FLEXIBLE -> appUpdateInfo.isFlexibleUpdateAllowed else -> false } if (isAvailable && isAllowed) { appUpdateManager.startUpdateFlowForResult( appUpdateInfo, activityResultLauncher, AppUpdateOptions.newBuilder(updateType).build() ) } } }