0

我减少版本构建和名称,所以版本构建和版本名称低于 Play 商店的版本,我实现了谷歌的 inapp 版本更新,一切正常,下载完成,所以我添加按钮告诉用户重新启动应用程序,以及何时他点击它显示安装页面并重新启动应用程序,但是当应用程序启动时它与以前的版本相同,因此安装不起作用:(

   private fun showInAppUpdate() {

    mAppUpdateManager = AppUpdateManagerFactory.create(activity);

    mAppUpdateManager.registerListener(installStateUpdatedListener);


    // Creates instance of the manager.
    appUpdateManager = AppUpdateManagerFactory.create(activity)

    // Returns an intent object that you use to check for an update.
    val appUpdateInfoTask = appUpdateManager.appUpdateInfo

    // Checks that the platform will allow the specified type of update.
    appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
        val a = appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
        val b = appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)


        if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
            // For a flexible update, use AppUpdateType.IMMEDIATE
            && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
        ) {
            // To avoid crash when startUpdateFlowForResult is called two times (by accident)
            try {

                appUpdateManager.startUpdateFlowForResult(
                    // Pass the intent that is returned by 'getAppUpdateInfo()'.
                    appUpdateInfo,
                    // Or 'AppUpdateType.FLEXIBLE' for flexible updates.
                    AppUpdateType.FLEXIBLE,
                    // The current activity making the update request.
                    activity,
                    // Include a request code to later monitor this update request.
                    INAPP_UPDATE_REQUEST_CODE)

            }
            catch (e : Exception){
                e.printStackTrace()
            }

        }
        else {
            Log.e("", "checkForAppUpdateAvailability: something else");
        }
    }
  }




 val installStateUpdatedListener = object : InstallStateUpdatedListener {
    override fun onStateUpdate(state: InstallState) {
        if (state.installStatus() == InstallStatus.DOWNLOADED) {
            popupSnackbarForCompleteUpdate()
        } else if (state.installStatus() == InstallStatus.INSTALLED) {
            mAppUpdateManager?.unregisterListener(this)

        } else {
            // Download or install in progress
        }
    }
}

  /* Displays the snackbar notification and call to action. */
  fun popupSnackbarForCompleteUpdate() {
     val snackBar =  Snackbar.make(
       activity!!.findViewById(R.id.home_root),
        HtmlCompat.fromHtml(this.resources.getString(R.string.inapp_downlaod_complete), 
   HtmlCompat.FROM_HTML_MODE_LEGACY),
        Snackbar.LENGTH_INDEFINITE
    )
    snackBar.setTextColor(Color.WHITE)
    snackBar
        .apply {
            setAction(activity!!.resources.getString(R.string.inapp_restart)) { 
  appUpdateManager.completeUpdate() }
              setActionTextColor(Color.GREEN)
            show()
        }
}




    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)


    if (requestCode == INAPP_UPDATE_REQUEST_CODE) {
        if (resultCode != AppCompatActivity.RESULT_OK) {

            mAppUpdateManager?.unregisterListener(installStateUpdatedListener)
        }
    }
}

为什么应用程序不使用 Play 商店的版本更新?

谢谢您的帮助

4

1 回答 1

1

大多数情况下,您正在从代码中启动您的第一个应用程序,然后尝试从商店更新该应用程序。最终,这些将是 2 个不同的应用程序(因为您的代码中的一个将是调试版本且未签名);因此,您不会看到更新。如果您想对此进行测试,您需要对应用程序进行签名并将其安装在您的手机上,而不仅仅是从代码中启动它。

于 2020-01-17T17:27:52.930 回答