如何在应用程序更新中实施“即时”?

时间:2019-06-12 11:17:39

标签: java android

我已经在Google Play商店中启动了应用程序,为此该应用程序我需要实施应用程序即时更新,以解决谁已经在使用我的应用程序的问题

  1. 我已经尝试过Github的示例,这些示例是灵活更新,而不是立即更新。

  2. 在android开发人员网站中,我也经历过我没有得到正确示例的情况

2 个答案:

答案 0 :(得分:0)

我们在应用中使用以下情况进行强制更新。

我们在后端数据库中维护当前版本代码和最新版本代码。

  • 在“启动”屏幕中,我正在调用该API以检查最新版本代码。
  • 从APP获取当前版本代码。
  • 从API获取最新版本代码。
  • 如果最新版本代码是增量代码,则为当前版本。我们显示更新对话框。
  • 您必须确保,一旦推出新的更新,您就需要更改后端数据库中的版本。

答案 1 :(得分:0)

尝试以下方法对Android应用程序进行即时更新的应用内更新。 为了更好的方法,请将这单个方法代码放在MainActivity中,然后在onCreate()方法中调用。

  AppUpdateManager appUpdateManager;

    private void inAppUpdate() {
    // Creates instance of the manager.
    appUpdateManager = AppUpdateManagerFactory.create(this);

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

   // Checks that the platform will allow the specified type of update.
    appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener<AppUpdateInfo>() {
        @Override
        public void onSuccess(AppUpdateInfo appUpdateInfo) {

            Log.e("AVAILABLE_VERSION_CODE", appUpdateInfo.availableVersionCode()+"");
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    // For a flexible update, use AppUpdateType.FLEXIBLE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
                // Request the update.

                try {
                    appUpdateManager.startUpdateFlowForResult(
                            // Pass the intent that is returned by 'getAppUpdateInfo()'.
                            appUpdateInfo,
                            // Or 'AppUpdateType.FLEXIBLE' for flexible updates.
                            AppUpdateType.IMMEDIATE,
                            // The current activity making the update request.
                            HomeActivity.this,
                            // Include a request code to later monitor this update request.
                            UPDATE_REQUEST_CODE);
                } catch (IntentSender.SendIntentException ignored) {

                }
            }
        }
    });

    appUpdateManager.registerListener(installStateUpdatedListener);
    appUpdateManager.unregisterListener(installStateUpdatedListener);
}
       //lambda operation used for below listener    
    InstallStateUpdatedListener installStateUpdatedListener = installState -> {
             if (installState.installStatus() == InstallStatus.DOWNLOADED) {
                 popupSnackbarForCompleteUpdate();
             } else
              Log.e("UPDATE", "Not downloaded yet");
         };


    private void popupSnackbarForCompleteUpdate() {

    Snackbar snackbar =
            Snackbar.make(
                    findViewById(android.R.id.content),
                    "Update almost finished!",
                    Snackbar.LENGTH_INDEFINITE);
       //lambda operation used for below action
    snackbar.setAction(this.getString(R.string.restart), view -> 
               appUpdateManager.completeUpdate());
    snackbar.setActionTextColor(getResources().getColor(R.color.your_color));
    snackbar.show();
}

courtsey here