发布新版本而不使用Google Play商店时,如何实现应用程序的自动更新?我正在使用JSON检查版本。
答案 0 :(得分:12)
实际上,在2020年6月,Flutter带来了更多的可能性。其中:
1。。在应用内进行更新。如果应用程序具有新版本,则显示两种通知。
插件-https://pub.dev/packages/in_app_update (仅适用于Android,iOS不支持该功能)
2。。当应用商店中有更新的应用版本可用时,将显示一个简单的警报提示窗口小部件或卡片。
适用于Android和iOS。 插件-https://pub.dev/packages/upgrader
3。。使用Firebase应用内消息传递。它使消息和通知形式具有灵活性。 -但是还有更多样板代码和工作。 +但是您可以在应用增长时将其用于其他消息和通知。
https://firebase.google.com/docs/in-app-messaging
4。自己制作。与Firebase消息传递相比,代码可能更少。
答案 1 :(得分:1)
您可以使用https://pub.dev/packages/flutter_downloader并让用户直接从您的应用下载更新(apk文件)
答案 2 :(得分:0)
如果您想使用automatic update
,则必须不使用Google Play商店。
如果您想使用Play商店进行操作,则存在一个插件。 in_app_update
如果您还想要ios解决方案,那么就像Igor所说,这是不可能的。您可以将用户重定向到AppStore。
答案 3 :(得分:0)
我的实现方式是使用变量并比较数据库中的变量。可能是Firebase或任何其他。对于此示例,我将使用Firebase实时数据库。
int version = 1;
void checkLatestVersion(){
//Here i am getting just the value of the latest version stored on firebase.
databaseReference.child("version").child("latestRealase").once().then((snapshot){
if(snapshot.value != null){
int versionNumberFromDatabase = int.parse(snapshot.value));
if(versionNumberFromDatabase>version){
print("the app needs to be updated");
//HERE you can create a dialog to display and force users to update
}else{
print("The app doesn't to be need updated ");
}
}
});
}
以上示例适用于Android和iOS,但有一个软件包可以让您从应用程序本身更新应用程序。检查文档。
这将启用使用官方Android API在Android上的应用内更新。
答案 4 :(得分:0)
也许这对您有帮助
Backend backend = Backend.instance();
PackageInfo packageInfo = await PackageInfo.fromPlatform();
String packageName = packageInfo.packageName;
Response r;
try {
r = await backend.io.get("https://play.google.com/store/apps/details?id=$packageName&hl=en");
if(r.statusCode == 200){
String data = r.data;
String pat1 = 'Current Version</div><span class="htlgb"><div class="IQ1z0d"><span class="htlgb">';
String pat2 = '</span>';
int p1 = data.indexOf(pat1) + pat1.length;
String f = data.substring(p1, data.length);
int p2 = f.indexOf(pat2);
String currentVersion = f.substring(0, p2);
return currentVersion;
}
return null;
} catch (e) {
errors = backend.interceptor.errors;
return null;
}
答案 5 :(得分:-1)
您可以在Android上执行此操作,但如果不使用AppStore,则无法在iOS上执行。您可以在this question中阅读有关如何在Android上执行操作的信息。