Диалоговое окно InAppUpdate появляется каждый раз, даже если я нажимаю кнопку обновления

#android #in-app-update #google-play-core

#Android #обновление в приложении #google-play-core

Вопрос:

У меня есть приложение, опубликованное в play Store с кодом версии 3, в новой версии я хочу реализовать функцию обновления в приложении, поэтому в build.gradle я добавляю:

 implementation 'com.google.android.play:core:1.8.2'
  

И в основном действии:

 public class MainActivity extends BaseActivity {
    //...
    private AppUpdateManager mAppUpdateManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        
        //....
        checkForUpdate();
    }

    /**
     * check for update
     */
    private void checkForUpdate() {
        // Creates instance of the manager.
        mAppUpdateManager = AppUpdateManagerFactory.create(this);
        mAppUpdateManager.registerListener(state -> {
            if (state.installStatus() == InstallStatus.DOWNLOADED) {
                // After the update is downloaded, show a notification
                // and request user confirmation to restart the app.
                popupSnackbarForCompleteUpdate();
            }
        });

        // Returns an intent object that you use to check for an update.
        Task<AppUpdateInfo> appUpdateInfoTask = mAppUpdateManager.getAppUpdateInfo();

        // Checks that the platform will allow the specified type of update.
        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    //amp;amp; appUpdateInfo.clientVersionStalenessDays() != null
                    //amp;amp; appUpdateInfo.clientVersionStalenessDays() >= DAYS_FOR_FLEXIBLE_UPDATE
                    amp;amp; appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {

                // Request the update.
                try {
                    mAppUpdateManager.startUpdateFlowForResult(
                            // Pass the intent that is returned by 'getAppUpdateInfo()'.
                            appUpdateInfo,
                            // Or 'AppUpdateType.IMMEDIATE' for flexible updates.
                            AppUpdateType.FLEXIBLE,
                            // The current activity making the update request.
                            this,
                            // Include a request code to later monitor this update request.
                            MY_REQUEST_CODE);
                } catch (IntentSender.SendIntentException e) {
                    Toast.makeText(this, R.string.update_failed, Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

        /**
     * Displays the snackbar notification and call to action.
     */
    private void popupSnackbarForCompleteUpdate() {
        final Snackbar snackbar =
                Snackbar.make(
                        findViewById(R.id.activity_main_layout),
                        R.string.an_update_has_been_just_downloaded,
                        Snackbar.LENGTH_INDEFINITE);
        snackbar.setAction(R.string.install, view -> mAppUpdateManager.completeUpdate());
        snackbar.setActionTextColor(
                ContextCompat.getColor(this, R.color.color_snackbar_action_text_color));
        snackbar.show();
    }
}
  

Чтобы иметь возможность протестировать эту функциональность, я меняю код версии на меньший номер, чем тот, который опубликован в Playstore (в данном случае 2, а приложение опубликовано с 3). Когда я запускаю свое приложение, оно показывает мне диалоговое окно для обновления приложения, и когда я нажимаю кнопку обновления, начинается обновлениеи устанавливается без каких-либо ошибок, но когда приложение перезапускается, оно снова показывает мне диалоговое окно обновления, и приложение, похоже, не обновляется, я не знаю, является ли это ошибкой в моем приложении или я должен загрузить приложение в Play Store, чтобы оно работало правильно.

Я использую пакет приложений (.aab)

Комментарии:

1. где проверить, что код этой версии ниже, чем загруженный??

2. @Ali Vatanparast библиотека play core проверяет меня

Ответ №1:

Вам нужен подписанный apk для обновления в приложении. Приложения в режиме отладки покажут вам диалоговое окно обновления и даже загрузят новую версию, но приложение не будет установлено / обновлено.