应用内更新:决定在灵活更新和立即更新之间进行选择的策略

In-App Updates : decide a strategy to choose between Flexible and Immediate update

我已经实施了 Google 的库来提供 In-App updates,并且我能够从 Google Play 商店[=17]接收 In-App updates =].我想在一个应用程序中同时实现 Immediate updateFlexible update。但是我找不到这样做的方法。应用内更新库根据 VersionCode 执行检查,VersionCode 只是一个整数。有什么方法可以制定策略来决定是使用灵活更新还是立即更新?

因此,他们已经听到了我们的声音,他们很快就会提出从 Android Dev Summit '19 中听到的解决方案。

问题:

appUpdateManager.appUpdateInfo.addOnSuccessListener{ info ->
    if(info.updateAvailability == UpdateAvailability.UPDATE_AVAILABLE){
        // Which trigger should I trigger: Flexible or Immediate
    }
}

作为开发人员,我们有 2 个信号来决定我们的策略:

1.优先级信号: 表示更新的重要性。优先级值是我们在发布时定义的。然后通过 Play Core Api.

将此优先级值公开给我们的应用程序

示例:

appUpdateManager.appUpdateInfo.addOnSuccessListener{ info ->
    if(info.updateAvailability == UpdateAvailability.UPDATE_AVAILABLE){
        if(info.updatePriority() > 3 && info.isUpdateAllowed(AppUpdateType.IMMEDIATE)){
            // trigger Immediate flow
        }
        else if(info.isUpdateAllowed(AppUpdateType.FLEXIBLE)){
            // trigger Flexible flow
        }
    }
}

当我们发布一个版本时,我们将优先级值设置为整数,比方说在 0-5 之间。 在我们的应用程序中,我们设置了一个阈值,比如说 3,然后构建一个决策树,如果优先级大于 3,则触发立即更新,否则触发灵活更新。

2。陈旧信号: 表示设备知道更新的时间。

示例:

appUpdateManager.appUpdateInfo.addOnSuccessListener{ info ->
    if(info.updateAvailability == UpdateAvailability.UPDATE_AVAILABLE){
        if(info.clientVersionStalenessDays() > 90 && info.isUpdateAllowed(AppUpdateType.IMMEDIATE)){
            // trigger Immediate flow
        }
        else if(info.clientVersionStalenessDays() > 30 && info.isUpdateAllowed(AppUpdateType.FLEXIBLE)){
            // trigger Flexible flow
        }
    }
}

他们说这个功能很快就会可用。

在此处查看完整视频:https://youtu.be/_o_q6hatcIs?t=566