应用程式更新中的Android应用程式Play Core程式库无法正常运作

时间:2019-09-04 05:33:06

标签: android kotlin google-play-services in-app

我已经使用Play Core Play Core库实现了Google Play inApp更新。当推送新更新时,应用程序会使用此库显示强制更新通知,下载新更新并显示更新完成。但是,当我退出应用程序并重新启动后,同一个圆圈仍在继续。显示更新可用,请再次更新通知。我认为下载后实际上并未进行更新。请帮助我解决这个问题。

fun initUpdate() {
        val appUpdateManager = AppUpdateManagerFactory.create(this)
        val appUpdateInfoTask = appUpdateManager.appUpdateInfo
        appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)
            ) {
                appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType. IMMEDIATE, this, MY_REQUEST_CODE
                )}}}override fun initComponents() {
        initUpdate()
        //rest of the code//
    }

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,在使用正式发布的KeyStore对应用程序(具有要更新的较低版本的应用程序)进行签名后,我就可以使用它。我以前使用调试密钥库对其进行了签名。

答案 1 :(得分:0)

这里是获取应用内更新的代码。

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

private fun checkForVersionUpdate() {
        val appUpdateInfoTask = appUpdateManager.getAppUpdateInfo()
        // Checks that the platform will allow the specified type of update.
        appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                startUpdateFlow(appUpdateInfo)
            } else if ((appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE))) {
                startUpdateFlow(appUpdateInfo)
            }
        }
    }


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

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == REQUEST_IMMEDIATE && resultCode == RESULT_CANCELED) {
            checkForVersionUpdate();
        }
    }