【问题标题】:How to show in-app update dialog when the user has denied the update previously after few days again?当用户在几天后再次拒绝更新时,如何显示应用内更新对话框?
【发布时间】:2020-05-26 16:55:49
【问题描述】:

我已经实现了在更新可用时显示灵活的应用内更新对话框的功能。但是当用户选择不更新应用程序并重新启动应用程序时,对话框再次出现。在用户选择不安装更新几天后,如何再次显示该对话框?

【问题讨论】:

    标签: java android google-play-services in-app-update google-play-core


    【解决方案1】:

    您可以在 Android 中使用 SharedPreferences。基本上,当您要求灵活更新时,将日期保存到 SharedPreferences 中,并在用户使用应用程序决定何时要求下一次更新时将当前日期与共享首选项中存储的日期进行比较。

    我建议您只询问一次,因为多次询问会惹恼您的用户。

     else if (checkVersion.android_current_version!! > versionName.toLong()) {
                        if (SharedPreference(this@WelcomeActivity).getInt(KEY_UPDATE_ASKED) != (checkVersion.android_current_version as Long).toInt()) {
                            appUpdateManager = AppUpdateManagerFactory.create(this@WelcomeActivity)
                            val appUpdateInfoTask = appUpdateManager!!.appUpdateInfo
    
                            appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
                                if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                                        && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
                                    appUpdateManager!!.startUpdateFlowForResult(
                                            appUpdateInfo,
                                            AppUpdateType.FLEXIBLE,
                                            this@WelcomeActivity,
                                            REQUEST_FLEXIBLE_UPDATE)
                                }
                            }
                        }
                    }
    

    这段代码(您需要根据自己的代码进行修改)让我在 checkVersion.android_current_version(我存储在 Firebase 中的版本,因此我也可以决定隐藏某些版本的 FlexibleUpdates 版本)时只询问一次灵活更新高于用户手机中安装的版本。您的用例要求您删除输入条件并检查日期差异,而不是检查之前是否已询问过更新。

    SharedPreferences 的帮助类

    class SharedPreference(val context: Context) {
        private val PREFS_NAME = "PREFERENCES"
        val sharedPref: SharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
    
        fun save(KEY_NAME: String, value: String) {
            val editor: SharedPreferences.Editor = sharedPref.edit()
    
            editor.putString(KEY_NAME, value)
    
            editor.apply()
        }
    
    
        fun getString(KEY_NAME: String): String? {
    
            return sharedPref.getString(KEY_NAME, null)
        }
    }
    

    【讨论】:

    • 感谢您的帮助。几天后再次询问用户是否需要灵活更新,或者我是否应该仅在应用程序发生重大变化时才询问他们以使用 clientVersionStalenessDays() 进行即时更新?
    • 如果你的应用程序在没有更新的情况下绝对不能继续它的职责,那么你应该去强制更新而不是灵活更新。我假设您这样做的方式是,只要 Playstore 中有更新,您就会询问他们。正如我解释的那样,我会做什么,答案是保留我想在 Firebase 中询问的版本号,并仅在我想询问更新时更新它。我想说,每个版本号只询问一次您认为有必要的版本,然后在有另一个更新时再次询问。不要以固定的天数来决定,因为您可能会多次询问相同的版本
    • 如果他们想更新它/如果他们的自动更新是打开的,他们可以随时更新自己,他们不需要你不断提醒他们,这很烦人。但这最终是一个商业决定
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多