Android 应用内更新检查是AppUpdateType.FLEXIBLE还是AppUpdateType.IMMEDIATE

Android 应用内更新检查是AppUpdateType.FLEXIBLE还是AppUpdateType.IMMEDIATE,android,in-app-update,google-play-core,Android,In App Update,Google Play Core,playstore控制台中是否有配置此值的选项 这是官方文件。代码: // Creates instance of the manager. AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(context); // Returns an intent object that you use to check for an update. Task<AppUpdateInfo> appUpdateI

playstore控制台中是否有配置此值的选项

这是官方文件。代码:

// 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.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;
        }
    }
其中
f
e
pendingent
,方法根据它们的值返回
true
false

更新类型(即时或灵活)在应用程序内设置,而不是在游戏控制台内设置。

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

appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
    if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
如果此检查成功,您需要自己启动更新流

appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE,

对于这种类型,更新将通过play store overlay安装在后台或阻止视图中

当触发灵活应用程序更新且用户离开应用程序时,您需要在下一次启动时检查灵活更新是在后台运行还是已完成


appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)有什么用途

这是一个非常常见的问题

许多人(包括我自己)将此解释为可以在某个地方动态设置的值,例如在Google Play控制台中


然而,情况似乎并非如此。这是一个本地检查,确定是否满足设备上的条件以显示对话框

如果要动态配置是显示即时更新还是灵活更新,则需要自己提供,例如从后端提供

有关更多信息:

与Play Store上的Live应用程序相比,我已经多次尝试降低
versionCode

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

由开发人员选择调用哪种类型的更新

模式由应用程序输入代码决定


请参阅以获取更多参考

恐怕无法通过游戏控制台远程配置此功能。我们必须在服务器中使用网络API来检查这一点。appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)有什么用?这是为了确保所需的更新类型得到支持。支持方式??他们将很快发布它,请检查:
很快您将能够为您的应用发布指定应用内更新优先级,这将通过应用程序内更新API提供。有关更多详细信息,请参阅Android开发者峰会:https://www.youtube.com/watch?v=_o_q6hatcIs
(此处:)“是否满足设备上显示对话框的条件”-是!我发现,如果在所有打开的都是通知的情况下检查此项,那么即使updateAvailability是UPDATE_AVAILABLE,isUpdateTypeAllowed()也将返回false(在调试器中,您可以看到返回的意图为null)。您需要查看更新是否可用,打开一个活动,然后从那里再次调用API,然后isUpdateTypeAllowed()将返回true,您将能够进行更新。
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE,
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.FLEXIBLE,
appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)

appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)