2

我已经使用 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//
    }
4

2 回答 2

1

我遇到了同样的问题,我在使用生产版本 KeyStore 签署应用程序(要更新较低的应用程序版本)后让它工作。我之前使用调试密钥库对其进行签名。

于 2020-01-29T03:08:33.333 回答
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();
        }
    }
于 2019-09-04T05:40:24.047 回答