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