我目前正在开发一个 Android 应用程序,并探索在不需要显式用户交互的情况下执行应用程序更新的可能性。我研究了 Google Play 核心库的应用内更新,但它似乎涉及灵活和即时更新类型的用户提示。
有什么方法可以静默或无需用户交互来实现更新吗?我的用例涉及我希望确保在后台无缝应用更新而不中断用户体验的场景。
如果有任何见解、建议或替代方法可以在无需用户明确参与的情况下以编程方式处理应用程序更新,我将不胜感激。
这是我当前代码的简化版本:
private void checkForAppUpdate() {
AppUpdateManager appUpdateManager = AppUpdateManagerFactory.create(this);
InstallStateUpdatedListener installStateUpdatedListener = state -> {
if (state.installStatus() == InstallStatus.DOWNLOADED) {
appUpdateManager.completeUpdate();
restartApp();
}
};
appUpdateManager.registerListener(installStateUpdatedListener);
Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppUpdateInfo appUpdateInfo = task.getResult();
if (appUpdateInfo != null && appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE) {
startUpdateFlow(appUpdateInfo, appUpdateManager);
}
} else {
Exception exception = task.getException();
if (exception != null) {
Log.e(TAG,"Failed to get AppUpdateInfo: " + exception.getMessage());
}
}
});
}
private void startUpdateFlow(AppUpdateInfo appUpdateInfo, AppUpdateManager appUpdateManager) {
try {
appUpdateManager.startUpdateFlowForResult(
appUpdateInfo,
AppUpdateType.IMMEDIATE,
this,
MY_UPDATE_REQUEST_CODE);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
有没有办法修改此代码或实施不同的方法来实现静默或无用户更新?
有什么方法可以静默或无需用户交互来实现更新吗?
不,就 APK/AAB 而言。
我的用例涉及我希望确保在后台无缝应用更新而不中断用户体验的场景。
根据定义,这对于 APK/AAB 来说是不可能的。您无法在不终止应用程序进程的情况下更新应用程序,这会中断用户体验。
您可以考虑将大部分业务逻辑转移到脚本语言中,例如通过 zipline 使用 JavaScript,因为您可以 非常小心 安全地更新这些脚本。