我在更新应用程序的应用程序中使用In-App Update API,而新版本在Play商店中可用。

模块gradle

defaultConfig {
        applicationId "xxx.xxxxx"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode rootProject.ext.vCode
        versionName rootProject.ext.vName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

最近上传的版本(在Playstore中直播)
vCode = 5
vName = "1.0.4"

项目gradle(降级以进行测试)
vCode = 4
vName = "1.0.3"

降级此版本以获取测试更新是否可用。

MainActivity.kt
class MainActivity : AppCompatActivity() {
    private var appUpdateManager: AppUpdateManager? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        appUpdateManager = AppUpdateManagerFactory.create(this)
    }

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


    private fun checkForVersionUpdate() {
            appUpdateManager?.appUpdateInfo?.addOnSuccessListener { appUpdateInfo ->
                if ((appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS)) {
                    // If an in-app update is already running, resume the update.
                    startUpdateFlow(appUpdateInfo)
                } else if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                        && appUpdateInfo.isUpdateTypeAllowed(IMMEDIATE)) {
                    startUpdateFlow(appUpdateInfo)
                }
            }
    }

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

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == 123) {
            if (resultCode != RESULT_OK) {
                Log.i("Update failed code:", resultCode.toString())
                // If the update is cancelled or fails,
                // you can request to start the update again.
            } else if(resultCode == RESULT_CANCELED)
                checkForVersionUpdate()
        }
    }
}

我上次使用App Bundle(.aab)和Open Beta在Play商店中上传了内部版本。

尝试以下方式。
  • 使用相同的软件包名称签名apk。
  • 清除Playstore apk缓存和存储。
  • 从playstore下载apk并从设备上将其卸载。然后,在降级版本代码后,签名apk并将其安装在设备中。仍然没有显示更新应用程序对话框。
  • 最佳答案

    与其他答案相反,该说法表明测试版本必须处于 Release模式或必须上载到Play Console测试轨道-完全错误,文档中没有任何提及。

    如果您满足API> = 21 &&的要求,并且具有Internet连接并且遇到此问题,请执行以下操作来解决:

  • 确认您的测试版本的版本代码低于生产中的版本代码
  • 清除PlayStore应用的存储和缓存
  • 使用先前已下载应用程序
  • 的帐户打开Play商店
  • 导航到PlayStore中的应用列表,并确认显示“更新”按钮。

  • PlayStore似乎有缓存问题,上述步骤可以刷新它。之后,即使在 Debug模式下,您也可以在In App Updates中进行测试。

    关于android - 在App Update API中,始终返回1(UPDATE_NOT_AVAILABLE),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56863431/

    10-09 00:01