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

时间:2019-08-26 15:06:23

标签: android in-app-update

我已经实现了Google的图书馆来提供In-App updates,并且能够从 Google Play商店接收In-App updates。我想在单个应用程序中同时实现Immediate updateFlexible update。但是我找不到办法。应用内更新库基于仅是整数的VersionCode进行检查。我有什么方法可以制定策略来决定采用“灵活更新”还是“立即更新”?

1 个答案:

答案 0 :(得分:1)

因此,他们已经听到了我们的声音,并且很快就提出了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
        }
    }
}

在发布时,我们将优先级设置为Integer,可以说是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