18188博金宝电子体育频道8bet金宝搏官网Okcupid的Android团队每周发布新功能和错误修复。在短时间内,该应用程序可以看到性能,用户体验,甚至收入增加的改进。当然,我们希望尽可能多的用户来接收这些改进,但是每周应用更新可能会过多,而不是所有用户都启用了自动更新。在App更新之前,我们已经为此问题的解决方案实施了Google播放核心库的支持。

预先应用程序更新解决方案

Forcupdate-1

在应用程序的开始时,我们会初始化体验的网络请求。当前版本为此作为此请求的参数传递,并且响应包括布尔标志,以便我们强制更新。依靠此字段需要Web开发人员手动更新该布尔值的条件,每当我们决定放大强制版本时。它还取决于我们以确保当前版本参数的值是最新的。
如果forcupdate == true,用户将以模态提出,将它们重定向到我们的应用程序播放商店列表中。

有趣的openplaystore(){val意图=意图(intent.action_view)intent.data = uri.parse(constants.play_store_link)开始活动(意图)}

发布 - 在应用更新解决方案中

谷歌的播放核心库现在支持应用程序更新。看看文档这里查看设置所需的内容。

为了实现更新流,我们必须执行以下操作;

1.确定我们是否要

  • 强制用户更新
  • 建议更新
  • 没做什么

为了使这一确定确定我们使用Firebase Remote Config。Firebase授予Android团队的188博金宝电子体育频道能力在不依赖于另一个团队对API进行更改的情况下更改更新的能力。我们在App Update属性中指定的值是no_update,imberiate_update或flexible_update。登录用户后,我们检查Firebase以查看我们是否应该提示更新。

有趣promptupdate(无:可选){val versionfromfirebase = firebaseremoteconfig .getInstance().getstring(firebaseConstants.in_pring_update_property)if(versionfromfirebase.isnotempty()){val updateType = integer.valueof(VersionFromFirebase)if(UpdateType!= firebaseConstants。no_update){updatemanager.checkifupdateisavailable(UpdateTeype,this)}}}}

2.检查播放商店以获取更多当前版本

图书馆通过似乎魔法确定播放商店上有更多的当前应用程序版本是否有更多的当前应用程序版本。在测试此时,使用与播放商店上的应用程序相同的签名版本构建。此外,您正在使用的APK的硬代码先前版本用于测试。

有趣checkIfUpdateIsAvailable(UPDATETYPE:中等,听者:UpdateCheckListener){appUpdateInfoTask.addOnSuccessListener {appUpdateInfo  - >如果(appUpdateInfo.updateAvailability()== UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(UPDATETYPE)){updateAvailable = appUpdateInfo.availableVersionCode()listener.onUpdateAvailable(appupdateinfo)}}}

如果有一个可供下载的较新版本,我们只想建议更新,我们希望确保我们没有将用户讨论以前更新到同一版本。如果我们制作更新强制性,则用户将无法选择退出。每次我们提示用户更新时,我们将该版本号存储在共享首选项中,并在我们再次提示用户之前检查该值。如果他们之前没有拒绝更新,那么我们就会显示提示下载更新。您可以在活动中倾听提示的结果纪念活动

有趣的onupdateavailable(appupdateinfo:appupdateinfo){val lastupdateversiondenied = //存储在sharedprefs val userdeniedcurrentupdate =(lastupdateversiondenied == updateavailable)(!userdeniedcurrentupdate){//此方法如果UpdoTeType为灵活性提供用户选择,则需要更新如果是imberatiate appupdatemanager.startupdateflowforresult(appupdateinfo,updateTepy,Activity,constantants.in_app_update_request_code)}}}}}}}

在'onActivityResult'

当(结果){constants.in_app_update_request_code  - > {何时(resuctCode){ascuestive.result_canceled  - > {updatemanager.unregisterListener()// store更新版本在SharedPrefs中拒绝的版本} ActivityResult.Result_in_App_update_Failed  - > {//通知用户下载通过snackbar}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

3.开始更新

一旦我们确认了更新,并且这是第一次提示用户更新到此版本,我们可以继续实际下载。打电话startupdateflowforresult将开始下载和installstateupdatedListener.将倾听结果。我们实现了自定义SNACKBAR来通知用户下载状态,并允许用户安装更新。

VAL flexibleUpdateListener:InstallStateUpdatedListener =对象:InstallStateUpdatedListener {覆盖乐趣onStateUpdate(installState:InstallState){VAL installStatus = installState .installStatus()VAL currentUpdateType = UPDATETYPE如果(installStatus = NULL && currentUpdateType!= NULL!){activity.showInAppInstallUpdateSnackbar(installStatus?,custupdateType)}}}

结论

在应用程序更新中实施使得更新过程无缝开发人员和用户。作为开发人员,我们现在拥有更可配置的方式来建议或要求用户更新其应用程序。对于用户来说,如果他们现在有自由在更新之间或在背景中进行选择 - 允许它们继续使用产品而不会错过我们的新功能,并且最重要的是找到完美的匹配。
快乐的海绵宝宝