Meh*_*ria 11 android android-app-bundle in-app-update
我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"
}
Run Code Online (Sandbox Code Playgroud)
上次上传版本(在 Playstore 中直播)
vCode = 5
vName = "1.0.4"
Run Code Online (Sandbox Code Playgroud)
项目 gradle(将其降级以进行测试)
vCode = 4
vName = "1.0.3"
Run Code Online (Sandbox Code Playgroud)
降级此版本以获取可用或不可用的测试更新。
主活动.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()
}
}
}
Run Code Online (Sandbox Code Playgroud)
我上次使用 App Bundle(.aab) 和 Open Beta 在 Play 商店中上传了构建版本。
尝试了以下方法。
与其他答案相反,其他答案说测试版本必须处于发布模式或必须上传到 Play Console 测试轨道 - 这是完全错误的,文档中没有任何提及这一点。
如果您满足 API >= 21 && 有互联网连接的要求并遇到此问题,请执行以下操作来解决:
这似乎是 PlayStore 的缓存问题,上面的步骤刷新了它。之后,即使在调试模式下,您也可以测试应用内更新。
确保:
您安装签名发布版本进行测试
与 Play 商店中的 applicationId 相同(您的风味没有任何 applicationIdSuffix)
并且 versionCode 较低
您的应用程序已发布(作为测试人员,您可以下载它)
| 归档时间: |
|
| 查看次数: |
3404 次 |
| 最近记录: |