18188博金宝电子体育频道8bet金宝搏官网OkCupid的Android团队发布每周新功能和bug修复。在很短的时间量的应用可以看到性能的改进,用户体验,甚至是收入增长。当然,我们希望尽可能多的用户可以接收这些改进,但每周更新应用似乎过大,并不是所有的用户已启用自动更新。我们已经为这个问题的解决方案实施之前和之后在应用程序更新是由谷歌的Play核心库支持。

前 - 在应用程序更新解决方案

forceupdate-1

在应用程序的开始,我们做一个网络请求初始化经验。该用户是在当前版本作为参数传递给这个请求传递和响应包括我们是否应该强制更新一个布尔标志。依托这一领域需要一个Web开发人员,每当我们决定放了强制性版手动更新条件是布尔的。这也取决于我们,以确保当前版本的参数是最新的值。
如果forceUpdate ==真,用户将与将其重定向到我们的应用程序的Play商店上市模态呈现。

有趣openPlayStore(){VAL意图=意向(Intent.ACTION_VIEW)intent.data = Uri.parse(Constants.PLAY_STORE_LINK)startActivity(意向)}

邮政 - 在应用程序更新解决方案

谷歌的Play核心库现在支持在应用更新。退房的文档这里看看有什么需要设立。

为了实现更新流程,我们必须做到以下几点;

1.确定如果我们想

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

为了做出此决定我们使用火力地堡远程配置。火力地堡授予Android团队改变更新的188博金宝电子体育频道属性,而不依赖于改变其他团队的API来进行的能力。在应用程序更新财产指定为我们的值是未刷新,IMMEDIATE_UPDATE或FLEXIBLE_UPDATE。一个用户登录后,我们检查火力地堡,看看我们是否应及时更新。

有趣promptUpdate!(无:Optional.None){VAL versionFromFirebase = FirebaseRemoteConfig .getInstance().getString(FirebaseConstants.IN_APP_UPDATE_PROPERTY)如果(versionFromFirebase.isNotEmpty()){VAL UPDATETYPE = Integer.valueOf(versionFromFirebase)如果(更新类型= FirebaseConstants。未刷新){updateManager.checkIfUpdateIsAvailable(UPDATETYPE,此)}}}

2.检查Play商店的更新版本

该库确定是否有通过什么似乎像魔术在Play商店中的更多当前应用程序的版本。当测试这一点,使用一个发布版本具有相同签名上播放商店中的应用。此外,硬编码的先前版本的APK您正在使用测试。

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

如果有可供下载的新版本,我们只想提出一个更新,我们要确保我们没有纠缠用户更新到相同的版本之前。如果我们进行更新强制性的,用户不会有退出的选项。每次我们提示用户更新,我们存储在共享偏好该版本号和我们确认值,我们再次提示用户之前。如果他们以前也没否认更新那么,我们显示提示下载更新。你可以听的提示在你的活动的结果onActivityResult

有趣onUpdateAvailable(appUpdateInfo:AppUpdateInfo){VAL lastUpdateVersionDenied = //存储在sharedprefs VAL userDeniedCurrentUpdate =(lastUpdateVersionDenied == updateAvailable)值,如果(userDeniedCurrentUpdate!){//此方法将使用户可以选择下载,如果UPDATETYPE是灵活的,需要更新如果它是IMMEDIATE appUpdateManager.startUpdateFlowForResult(appUpdateInfo,UPDATETYPE,活性,Constants.IN_APP_UPDATE_REQUEST_CODE)}}

在“onActivityResult”

当(结果){Constants.IN_APP_UPDATE_REQUEST_CODE  - > {时(requestCode){Activity.RESULT_CANCELED  - > {updateManager.unregisterListener(),将其sharedprefs否认} // ActivityResult.RESULT_IN_APP_UPDATE_FAILED存储更新版本 - > {//告知用户查找下载通过小吃吧失败}}}

3.启动更新

一旦我们确认有可用的更新,而这是第一次,提示用户更新到这个版本,我们可以用实际的下载继续。调用startUpdateFlowForResult将开始下载和InstallStateUpdatedListener将监听的结果。我们的定制实现的小吃店,以告知用户下载的状态,并允许用户安装更新。

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

结论

实现在应用程序更新,使开发者和用户都在更新过程天衣无缝。作为开发人员,我们现在有更多的配置方式,建议或要求用户更新他们的应用程序。对于用户来说,如果他们现在可以自由更新立即或在后台之间做出选择 - 允许他们继续使用该产品不会对我们伟大的新功能,错过了,最重要的发现他们的绝配。
海绵宝宝快乐