Обновление Google InApp не работает - всегда возвращает UPDATE_NOT_AVAILABLE - PullRequest
0 голосов
/ 05 мая 2020

Я не вижу, как в моем приложении работают обновления Google In-App. Вот как я реализовал свой код, но appUpdateInfo всегда возвращает UPDATE_NOT_AVAILABLE (1).

Метод onCreate

appUpdateManager = AppUpdateManagerFactory.create(this)
        appUpdateManager.registerListener(this)
        val appUpdateInfoTask = appUpdateManager.appUpdateInfo

    appUpdateInfoTask.addOnSuccessListener {appUpdateInfo ->
        try {
            if(appUpdateInfoTask.isComplete){
                if (appUpdateInfo.updateAvailability() == UPDATE_AVAILABLE) {
                    ToastUtils.showShort("Update Available" + appUpdateInfo.isUpdateTypeAllowed(FLEXIBLE))
                    if(appUpdateInfo.isUpdateTypeAllowed(FLEXIBLE)){
                        ToastUtils.showShort("Flexi Update")
                        requestAppUpdate(appUpdateManager.appUpdateInfo.getResult(), FLEXIBLE)
                    }else if(appUpdateInfo.isUpdateTypeAllowed(IMMEDIATE)){
                        ToastUtils.showShort("Immediate Update")
                        requestAppUpdate(appUpdateManager.appUpdateInfo.getResult(), IMMEDIATE)
                    }
                }
            }
        } catch (e: Exception) {
            Log.e("Update Exception", e.message)
        }
    }

Метод onResume

override fun onResume() {
        super.onResume()
        val appUpdateInfoTask = appUpdateManager.appUpdateInfo
        appUpdateInfoTask.addOnCompleteListener {
            Log.e("Update Complete", "Complete")
        }
        appUpdateInfoTask.addOnSuccessListener {
            if(appUpdateInfoTask.isComplete){
                if (it.installStatus() == DOWNLOADED) {
                    showUpdateSnackbar()
                }
            }
        }
    }

Метод onDestroy

override fun onDestroy() {
        super.onDestroy()
        appUpdateManager.unregisterListener(this)
    }

Метод onActivityResult

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == REQUEST_CODE_TO_FETCH_UPDATES) {
            when (resultCode) {
                Activity.RESULT_OK -> {
                    ToastUtils.showShort("Access to Update Granted")
                }
                Activity.RESULT_CANCELED -> {
                    ToastUtils.showShort("Access to Update Cancelled")
                }
                ActivityResult.RESULT_IN_APP_UPDATE_FAILED -> {
                    ToastUtils.showShort("Access to Update Failed")
                }
            }
        }
    }

Ключевые моменты

  1. Загрузил мое приложение на внутреннюю тестовую дорожку с Android Формат пакета приложений
  2. Обновление приложения доступно в магазине (на внутренней дорожке), когда мой код, написанный выше в onCreate возвращает UPDATE_NOT_AVAILABLE.
  3. Я загрузил с помощью Google Play Developers API и установил inAppUpdatePriority как 5

ЗАПРОСЫ:

  1. Я много раз пробовал обновить приложение в магазине, и я никогда не вижу обновления своего приложения с помощью этого кода. ПОЧЕМУ?
  2. Как я могу увидеть фактическое ГИБКОСТЬ или НЕМЕДЛЕННОСТЬ Обновить путем тестирования с внутреннего тестового трека? Где можно установить эту конфигурацию?

1 Ответ

0 голосов
/ 06 мая 2020

Я недавно успешно реализовал дату приложения, поэтому я думаю, что смогу вам помочь.

Я могу предложить вам внести некоторые изменения в свой код, а также вы должны следовать правильному способу тестирования с внутренний совместный доступ к приложениям.

Внутри блока try в методе OnCreate вы можете использовать это

if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE){

   if (appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                appUpdateManager.startUpdateFlowForResult(
                appUpdateInfo,
                AppUpdateType.FLEXIBLE,
                this,
                REQUEST_CODE_TO_FETCH_UPDATES)
    } 
   else if (appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                appUpdateManager.startUpdateFlowForResult(
                appUpdateInfo,
                AppUpdateType.IMMEDIATE,
                this,
                REQUEST_CODE_TO_FETCH_UPDATES)
     }

  }

Чтобы протестировать функцию обновления в приложении, вы должны выполнить следующие пункты:

  • Вы должны убедиться, что текущее приложение на вашем устройстве установлено с использованием внутреннего URL-адреса общего доступа к приложению, а текущее приложение уже поддерживает обновления в приложении, а также его код версии должен быть ниже, чем обновленная версия во внутреннем совместном использовании приложений.
  • Если все в порядке, щелкните только ссылку внутреннего совместного использования приложения для обновленной версии вашего приложения. Не устанавливайте приложение со страницы Google Play Store, которую вы видите после нажатия ссылки.
  • Теперь, когда вы откроете приложение, вы найдете обновление в своем приложении.

    Или в простой способ -

    Шаг 1. Просто создайте свое приложение с функциями обновления приложения и загрузите его во внутреннее тестирование приложения в Play Console

    Шаг 2 - Теперь go по ссылке, полученной после загрузите приложение и установите эту версию вашего приложения из Play Store.

    Шаг 3. Теперь снова создайте приложение с кодом более высокой версии, чем предыдущий, и снова загрузите его во внутреннее тестирование приложения в Play Console

    Шаг 4 - Теперь снова go на ссылку, полученную после загрузки приложения, но теперь не устанавливайте это обновление сразу после перехода на страницу Play Store, нажмите назад и выйдите.

    Шаг 5 - Теперь откройте свое ранее установленное приложение, и вы найдете обновление приложения в своем приложении

Надеюсь, это вам поможет.

...