在andorid flutter上检查客户端版本应用程序(无需Google Play)

问题描述 投票:0回答:1

我有:

  • flutter 客户端应用程序仅适用于 Android,
  • myapp.apk 文件 -> 用户使用此文件来安装应用程序,
  • .net 中的后端,
  • 智威汤逊。

我的期望:

  • 当客户端应用程序发生更改时提示用户需要更新(强制更新给用户),
  • 不要使用 Google Play。

可以吗?

我在想什么:

  • 版本控制 API,
  • 后台使用静态客户端版本,每隔一段时间检查是否正确
  • 在每个端点附加客户端版本
  • 以某种方式使用bitbucket(放入最新的.apk版本)
  • 使用网络套接字

最好的方法是什么?我只想实现检查当前版本,我现在不考虑更新或下载最新版本。

android flutter
1个回答
0
投票

我通过websocket解决了这个问题。在服务器端,我创建了具有所需客户端版本的

WebSocketController
。在客户端,我使用了 web_socket_client 并创建了这样的东西:

Future<void> main() async {
  final appVersion = await getVersion();
  final backoff = LinearBackoff(
    initial: const Duration(seconds: 0),
    increment: const Duration(seconds: 1),
    maximum: const Duration(seconds: 3),
  );
  final socket = WebSocket(
    Uri.parse('ws://api_address/ws'),
    backoff: backoff,
  );

  socket.connection.listen((event) {
    if (event is Connected || event is Reconnecting || event is Reconnected) {
      runApp(
        StreamBuilder(
          stream: socket.messages,
          builder: (context, snapshot) {
            if (snapshot.hasData && snapshot.data != appVersion) {
              return RequiredVersionAlert(
                  appVersion: appVersion, requiredVersion: snapshot.data);
            }
            return const App();
          },
        ),
      );
    }
  });
}

Future<String> getVersion() async {
  PackageInfo packageInfo = await PackageInfo.fromPlatform();
  return packageInfo.version;
}

我用过

web_socket_client
,因为有重连机制。有两个流,一个用于连接服务器状态,第二个流用于接收消息。

© www.soinside.com 2019 - 2024. All rights reserved.