比如说,用户已安装了应用。然后我向商店发布了一个新版本。现在,我希望所有用户在他们继续使用之前拥有更新的应用程序。
当然,我可以在服务器端放置一些标志,这将阻止使用旧版本,但这假设用户必须首先打开应用程序,然后更新它,然后使用它。或者,我可以创建一些推送通知,它会立即提醒所有用户更新。但我从未见过这样的通知,所以我认为这不是传统方式。
那么,有没有传统的方法呢?在新版本发布后,如何强制所有应用程序立即更新?最好是,当应用程序在后台时。
答案 0 :(得分:2)
没有办法。用户控制他们的硬件,可能不想更新。并且Play商店本身可以控制它何时更新(它更喜欢在一夜之间这样做,它更喜欢在wifi而不是蜂窝数据上这样做)。如果你想要这个,那么要做的就是在服务器上进行版本检查并发送一个代码,该代码可以让你的服务器自己更新应用程序,或让它告诉用户从Play更新它。
答案 1 :(得分:0)
您可以使用需要随Play商店版本更新的api。然后检查安装的版本。如果它比您的Play商店版本旧,请先前往Play商店,然后再进行其他任何活动,并强制对其进行更新。我正在使用retrofit2来调用api。
private int versionCode = BuildConfig.VERSION_CODE;
private String versionName = BuildConfig.VERSION_NAME;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
GetAppVersion();
}
private void GetAppVersion() {
final DatabaseManager dm = new DatabaseManager(this);
Retrofit retrofit = RetrofitSingleton.getInstance(getBaseContext());
final CommonApiInterface commonApiInterface = retrofit.create(CommonApiInterface.class);
commonApiInterface.GetAppCurrentVersion().enqueue(new Callback<AppVersionModel>() {
@Override
public void onResponse(Call<AppVersionModel> call, Response<AppVersionModel> response) {
Boolean b = dm.update_TrackAppVersion(Integer.valueOf(response.body().getVersionCode()),response.body().getVersionName());
if (versionCode < Integer.valueOf(response.body().getVersionCode())) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=YOUR PACKAGE NAME"));
startActivity(intent);
}
}
@Override
public void onFailure(Call<AppVersionModel> call, Throwable t) {
Log.d("Error", "onFailure: "+t);
}
});
}
答案 2 :(得分:0)
实际上有一种方法(最近发布)–使用Android in-app updates API。很棒的事情是,更新过程可以在用户不离开应用程序的情况下完成。
您可以使用AppUpdateManager获取应用更新信息,然后使用应用内更新API发起灵活的更新(提示用户更新应用内并允许下载背景,但允许用户选择是否要更新)或立即更新(全屏视图,不允许用户在更新前继续操作)。
in-app updates guide官方提供了示例代码和说明。