如何使用 in_app_update 强制用户从 Flutter 中的 Play 商店更新应用程序

How to force users to update app from play store in Flutter using in_app_update

我希望我的应用程序的用户始终拥有最新版本。如果他们没有最新版本,它应该首先从 Play 商店下载最新版本,如图所示。

我找到了一个名为 Upgrader 的包,但这只是一个提示。如图所示,它未链接到 Play 商店。

编辑

根据 Maadhav Sharma 的建议,我现在正在使用 in_app_update 软件包,但它显示 没有可用的更新

这是我的代码:

....

class _TnPState extends State<TnP> {
  ThemeBloc _themeBloc;
  FirebaseMessaging _firebaseMessaging;
  NotificationBloc _notificationBloc;
  String _test;

  @override
  void initState() {
    _themeBloc = ThemeBloc();
    _firebaseMessaging = FirebaseMessaging();
    _notificationBloc = NotificationBloc();
    _firebaseMessaging.configure(
      onMessage: (notification) async => _notificationBloc.yes(),
      onResume: (notification) async => _notificationBloc.yes(),
      onLaunch: (notification) async => _notificationBloc.yes(),
    );
    checkForUpdate();
    super.initState();
  }

  Future<void> checkForUpdate() async {
    InAppUpdate.checkForUpdate().then((info) {
      String display = info.toString();
      setState((){
        _test = display;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<AppTheme>(
      stream: _themeBloc.themeStream,
      initialData: AppTheme.Light,
      builder: (context, AsyncSnapshot<AppTheme> snapshot) {
        return MaterialApp(
          title: 'TnP',
          debugShowCheckedModeBanner: false,
          theme: appThemeData[snapshot.data],
          home: _test==null ?
                Container() : 
                InAppUpdateScreen(display: _test),//SplashScreen(),
        );
      },
    );
  }
}

InAppUpdateScreen 只显示文本。
Play 商店中的应用程序显示更新可用:


但是通过 playstore 安装的旧版本的应用程序没有显示更新:


知道如何解决这个问题吗?

有你想要的包裹:

https://pub.dev/packages/in_app_update

Android
此插件集成了官方 Android API 以在 2019 年发布的应用更新中执行:https://developer.android.com/guide/app-bundle/in-app-updates

iOS
iOS 不提供此类功能。您可能想查看例如https://pub.dev/packages/upgrader。如果您在 iOS 设备上调用上述方法,您将 运行 进入未实现的异常。

谢谢...

可能不是问题的实际答案,但如果有人正在寻找一种易于集成的内置解决方案,它适用于 Android、iOS 并且与语言、框架无关。您可以使用 https://appupgrade.dev/ 服务强制更新您的移动应用程序。您需要在应用程序升级服务中为要更新的应用程序版本创建新版本,并且select您是要强制执行还是只是想让用户知道新版本可用。

在此之后,您需要从您的应用中调用应用升级 api,并提供所需的详细信息,例如您的应用版本、平台、环境和应用名称。 API 会 return 为您提供有关此应用程序是否需要更新的详细信息。根据响应,您可以在 app.You 中显示弹出窗口,可以在应用程序启动时调用此 API 或定期检查更新。您甚至可以提供自定义消息。 API 回复:

看到响应强制更新为真。因此,通过显示弹出窗口在应用程序中进行处理。

您可以在此处找到完整的用户文档。 https://appupgrade.dev/docs

谢谢。

你可以使用这个包
https://pub.dev/packages/upgrader

像这样将整个小部件包装在 UpgradeAlert 小部件中 ->

Scaffold(
          appBar: AppBar(title: Text('Upgrader Example')),
          body: UpgradeAlert(
            child: Center(child: Text('Your widget is here')),
          )),

如果有可用更新