应用程序更新检查是否为AppUpdateType.FLEXIBLE或AppUpdateType.IMMEDIATE

19

在Play商店控制台中是否有可用选项来配置此值?

以下是官方文档代码:

// Creates instance of the manager.
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context);

// Returns an intent object that you use to check for an update.
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

// Checks that the platform will allow the specified type of update.
appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
    if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
          // For a flexible update, use AppUpdateType.FLEXIBLE
          && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
              // Request the update.
    }
});

我们如何了解:

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)

如何配置上述类型?在官方文档中没有相关说明。

在AppUpdateInfo.class中:

public final boolean isUpdateTypeAllowed(int var1) {
        if (var1 == 0) {
            return this.f != null;
        } else if (var1 == 1) {
            return this.e != null;
        } else {
            return false;
        }
    }

其中fePendingIntent,并且方法基于它们的值返回truefalse


2
很抱歉,目前无法通过Play控制台远程配置此项。我们不得不在服务器上使用网络API来检查这个问题。 - Maran Subburayan
3个回答

10
这是一个非常常见的问题。许多人(包括我自己)将其解释为可以在某个地方动态设置的值,例如在Google Play控制台中。然而,事实似乎并非如此。这是一个本地检查,用于确定设备上的条件是否满足显示对话框。如果您想动态配置是否显示立即更新或灵活更新,则需要自行提供,例如从您的后端。更多信息请参见:https://medium.com/@jplipata/undocumented-android-in-app-updates-a95efb9b7bd8?source=friends_link&sk=e8085150daa555ea80d07e8419b5341e

1
他们即将发布它,看看这个:很快你就可以为你的应用程序发布指定应用内更新优先级,这将通过应用内更新API提供。请查看此Android开发者峰会演讲以获取更多详细信息:https://www.youtube.com/watch?v=_o_q6hatcIs(来自此处:https://issuetracker.google.com/issues/133299031) - Vadim Kotov
1
“设备是否满足显示对话框的条件” - 是的!我发现,如果您在打开通知时检查此项,则即使updateAvailability为UPDATE_AVAILABLE,isUpdateTypeAllowed()也将返回false(并且在调试器中可以看到返回的意图为null)。 您需要查看是否有可用更新,打开一个活动,然后从那里再次调用API,然后isUpdateTypeAllowed()将返回true,您就可以进行更新了。 - Andy Weinstein

0

更新类型(立即或灵活)在应用内设置,而不是在Play控制台中设置。

首先只需进行应用程序更新可用性检查:

appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
    if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE

如果此检查成功,则需要自行启动更新流程。
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE,

或者

appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.FLEXIBLE,

关于这种类型,更新将通过Play Store覆盖层在后台或阻塞视图中安装。
当触发灵活的应用程序更新且用户离开应用程序时,您需要在下一次启动时检查灵活更新是否在后台运行或已完成。

https://developer.android.com/guide/app-bundle/in-app-updates


1
appUpdateInfo.isUpdateTypeAllowed (AppUpdateType.IMMEDIATE) 的用途是什么? - SANAT
确保所需的更新类型得到支持。 - Benjamin Stürmer
1
支持怎么样? - SANAT

0
appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)

我已经尝试多次将versionCode降低到Play商店上的实时应用程序。

也许在下一个更新中,谷歌会解释关于isUpdateTypeAllowed,因为现在它只是一个模棱两可的调用。

开发人员可以选择调用哪种类型的更新。

该模式由代码中的应用程序确定。

请参阅以下链接以获取更多信息https://developer.android.com/guide/app-bundle/in-app-updates#start_update


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接