Flutter集成悟空IM插件wukongimfluttersdk的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter集成悟空IM插件wukongimfluttersdk的使用

悟空IM flutter sdk 源码 详细文档

快速入门

安装

pub package

dependencies:
  wukongimfluttersdk: ^version // 版本号看上面

引入

import 'package:wukongimfluttersdk/wkim.dart';

初始化sdk

WKIM.shared.setup(Options.newDefault('uid', 'token'));

初始化IP

WKIM.shared.options.getAddr = (Function(String address) complete) async {
    // 可通过接口获取后返回
    String ip = await HttpUtils.getIP();
    complete(ip);
};

连接

WKIM.shared.connectionManager.connect();

断开

// isLogout true:退出并不再重连 false:退出保持重连
WKIM.shared.connectionManager.disconnect(isLogout)

发消息

WKIM.shared.messageManager.sendMessage(WKTextContent('我是文本消息'), WKChannel(channelID, channelType));

监听

连接监听

WKIM.shared.connectionManager.addOnConnectionStatus('home',
        (status, reason, connectInfo) {
      if (status == WKConnectStatus.connecting) {
        // 连接中
      } else if (status == WKConnectStatus.success) {
        var nodeId = connectInfo?.nodeId; // 节点id
        // 成功
      } else if (status == WKConnectStatus.noNetwork) {
        // 网络异常
      } else if (status == WKConnectStatus.syncMsg) {
        // 同步消息中
      } else if (status == WKConnectStatus.syncCompleted) {
        // 同步完成
      }
    });

消息入库

WKIM.shared.messageManager.addOnMsgInsertedListener((wkMsg) {
      // todo 展示在UI上
    });

收到新消息

WKIM.shared.messageManager.addOnNewMsgListener('chat', (msgs) {
      // todo 展示在UI上
    });

刷新某条消息

WKIM.shared.messageManager.addOnRefreshMsgListener('chat', (wkMsg) {
      // todo 刷新消息
    });

命令消息(cmd)监听

WKIM.shared.cmdManager.addOnCmdListener('chat', (cmdMsg) {
    // todo 按需处理cmd消息
});
  • 包含key的事件监听均有移除监听的方法,为了避免重复收到事件回调,在退出或销毁页面时通过传入的key移除事件。

许可证

悟空IM 使用 Apache 2.0 许可证。有关详情,请参阅 LICENSE 文件。


示例代码

example

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

  • Lab: Write your first Flutter app
  • Cookbook: Useful Flutter samples

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.


以下是一个完整的示例代码,展示了如何在Flutter项目中集成悟空IM插件wukongimfluttersdk

import 'package:flutter/material.dart';
import 'package:wukongimfluttersdk/wkim.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  [@override](/user/override)
  void initState() {
    super.initState();

    // 初始化SDK
    WKIM.shared.setup(Options.newDefault('uid', 'token'));

    // 初始化IP
    WKIM.shared.options.getAddr = (Function(String address) complete) async {
      String ip = await HttpUtils.getIP();
      complete(ip);
    };

    // 添加连接状态监听
    WKIM.shared.connectionManager.addOnConnectionStatus('home',
            (status, reason, connectInfo) {
          if (status == WKConnectStatus.connecting) {
            print("正在连接...");
          } else if (status == WKConnectStatus.success) {
            var nodeId = connectInfo?.nodeId;
            print("连接成功,节点ID: $nodeId");
          } else if (status == WKConnectStatus.noNetwork) {
            print("网络异常");
          } else if (status == WKConnectStatus.syncMsg) {
            print("同步消息中");
          } else if (status == WKConnectStatus.syncCompleted) {
            print("同步完成");
          }
        });

    // 连接
    WKIM.shared.connectionManager.connect();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('悟空IM Flutter SDK Demo'),
      ),
      body: Center(
        child: Text('点击按钮发送消息'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 发送消息
          WKIM.shared.messageManager.sendMessage(
              WKTextContent('Hello, World!'), WKChannel('channelID', 'channelType'));
        },
        tooltip: '发送消息',
        child: Icon(Icons.send),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    // 移除连接状态监听
    WKIM.shared.connectionManager.removeOnConnectionStatus('home');

    // 断开连接
    WKIM.shared.connectionManager.disconnect(false);

    super.dispose();
  }
}

更多关于Flutter集成悟空IM插件wukongimfluttersdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成悟空IM插件wukongimfluttersdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中集成并使用悟空IM插件(wukongimfluttersdk)的代码示例。这个示例将展示如何初始化插件、登录、发送消息以及接收消息的基本操作。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加悟空IM插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  wukongimfluttersdk: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来下载依赖。

2. 初始化插件

在你的Flutter应用的主文件(通常是main.dart)中,你需要初始化悟空IM插件。

import 'package:flutter/material.dart';
import 'package:wukongimfluttersdk/wukong_im_flutter_sdk.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 初始化悟空IM插件
    WukongIMClient.instance.init({
      "appId": "你的AppID",  // 请替换为你的实际AppID
      "serverUrl": "你的服务器URL",  // 请替换为你的实际服务器URL
    });

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('悟空IM集成示例'),
        ),
        body: ChatScreen(),
      ),
    );
  }
}

3. 登录

在你的ChatScreen(或任何你希望处理登录逻辑的Widget)中,实现登录功能。

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  void login() async {
    try {
      bool result = await WukongIMClient.instance.login({
        "userId": "用户ID",  // 请替换为你的实际用户ID
        "token": "用户Token",  // 请替换为你的实际用户Token
      });
      if (result) {
        print("登录成功");
      } else {
        print("登录失败");
      }
    } catch (e) {
      print("登录时发生错误: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          ElevatedButton(
            onPressed: login,
            child: Text('登录'),
          ),
          // 其他UI组件...
        ],
      ),
    );
  }
}

4. 发送消息

在登录成功后,你可以发送消息。以下是一个发送文本消息的示例:

void sendMessage() async {
  try {
    bool result = await WukongIMClient.instance.sendMessage({
      "conversationId": "会话ID",  // 请替换为你的实际会话ID
      "content": {
        "type": "text",
        "text": "Hello, 悟空IM!",
      },
    });
    if (result) {
      print("消息发送成功");
    } else {
      print("消息发送失败");
    }
  } catch (e) {
    print("发送消息时发生错误: $e");
  }
}

你可以在ChatScreen中添加一个按钮来调用sendMessage函数。

5. 接收消息

悟空IM插件通常会通过监听器或回调来接收消息。你可以设置一个全局监听器来接收新消息。

@override
void initState() {
  super.initState();

  // 设置消息监听器
  WukongIMClient.instance.onMessageReceived.listen((message) {
    print("收到新消息: ${message['content']['text']}");
    // 在这里处理收到的消息,比如更新UI
  });
}

6. 清理资源

在你的应用退出或不再需要悟空IM插件时,记得清理资源。

@override
void dispose() {
  super.dispose();
  // 注销悟空IM插件
  WukongIMClient.instance.logout();
}

总结

以上代码展示了如何在Flutter中集成并使用悟空IM插件进行基本的登录、发送消息和接收消息操作。请注意,这只是一个基本示例,实际项目中可能需要处理更多的错误处理和状态管理。务必参考悟空IM插件的官方文档来获取更详细的信息和高级功能。

回到顶部