В App Update API всегда возвращается 1 (UPDATE_NOT_AVAILABLE) - PullRequest
0 голосов
/ 03 июля 2019

Я использую In-App Update API в приложении для обновления приложения, в то время как новая версия доступна в магазине Play.

модуль Gradle

defaultConfig {
        applicationId "xxx.xxxxx"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode rootProject.ext.vCode
        versionName rootProject.ext.vName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

Последняя версия загрузки (Live in Playstore)

vCode = 5
vName = "1.0.4"

проект gradle (понизьте его для тестирования)

vCode = 4
vName = "1.0.3"

Понизьте эту версию для тестирования, доступно обновление или нет.

MainActivity.kt

class MainActivity : AppCompatActivity() {
    private var appUpdateManager: AppUpdateManager? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        appUpdateManager = AppUpdateManagerFactory.create(this)
    }

    override fun onResume() {
        super.onResume()
            checkForVersionUpdate()
    }


    private fun checkForVersionUpdate() {
            appUpdateManager?.appUpdateInfo?.addOnSuccessListener { appUpdateInfo ->
                if ((appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS)) {
                    // If an in-app update is already running, resume the update.
                    startUpdateFlow(appUpdateInfo)
                } else if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                        && appUpdateInfo.isUpdateTypeAllowed(IMMEDIATE)) {
                    startUpdateFlow(appUpdateInfo)
                }
            }
    }

    private fun startUpdateFlow(appUpdateInfo: AppUpdateInfo) {
        try {
            appUpdateManager?.startUpdateFlowForResult(
                    appUpdateInfo,
                    IMMEDIATE,
                    this,
                    123)
        } catch (e: InvocationTargetException) {
            e.printStackTrace()
        } catch (e: IntentSender.SendIntentException) {
            e.printStackTrace()
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == 123) {
            if (resultCode != RESULT_OK) {
                Log.i("Update failed code:", resultCode.toString())
                // If the update is cancelled or fails,
                // you can request to start the update again.
            } else if(resultCode == RESULT_CANCELED)
                checkForVersionUpdate()
        }
    }
}

В последний раз я загружал сборку в Play Store с помощью App Bundle (.aab) и Open Beta.

Пробовал следующими способами.

  • Подпишите apk с тем же именем пакета.
  • Очистить кэш и хранилище Playstore apk.
  • Загрузите apk из playstore и удалите его с устройства. Затем, после понижения версии кода, подпишите apk и установите его на устройстве. По-прежнему не отображается диалоговое окно обновления приложения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...