Flutter即时通讯插件cometchat的使用

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

Flutter即时通讯插件cometchat的使用

CometChat SDK for Flutter

CometChat SDK 是一个强大的工具包,开发者可以利用它快速将可靠的全功能聊天功能集成到现有或新应用中。它消除了从零开始构建聊天基础设施的复杂性,从而加速开发过程并减少上市时间。

先决条件

  • Flutter >= 2.5.0
  • SDK >= 2.17.0 < 4.0.0
  • Android Studio 2022.2
  • Android 5.0, API 21 和以上
  • Xcode 114.3
  • iOS 12.0

开始

要设置 Flutter SDK 并利用 CometChat 实现您的聊天和通话功能,请按照以下步骤操作:

  1. CometChat Dashboard 注册以创建账户。
  2. 注册后,登录您的 CometChat 账户并创建一个新的应用。创建完成后,CometChat 将为您生成一个 Auth Key 和 App ID。请确保这些凭据安全保存,因为您稍后需要它们。
  3. 参考 基本组件 了解 CometChat 的基本组件。
  4. 参阅 集成步骤 文档中的内容,将 SDK 集成到您的 Flutter 应用中。

帮助和支持

对于在项目中运行遇到的问题或与我们 SDK 的集成问题,请参阅我们的 文档 或创建 支持票 或寻求实时支持通过 CometChat Dashboard


示例代码

import 'package:cometchat/cometchat_sdk.dart';

class TestClass with MessageListener {

  initializeCometChat() {
    String region = "REGION";
    String appId = "APP_ID";

    AppSettings appSettings = (AppSettingsBuilder()
      ..subscriptionType = CometChatSubscriptionType.allUsers
      ..region = region
      ..autoEstablishSocketConnection = true
    ).build();

    CometChat.init(appId, appSettings, onSuccess: (String successMessage) {
      // "Initialization completed successfully $successMessage"
    }, onError: (CometChatException excep) {
      // "Initialization failed with exception: ${excep.message}";
    });
  }

  // CometChat.addMessageListener("listenerId", this);

  [@override](/user/override)
  void onTextMessageReceived(TextMessage textMessage) {
    // TODO: 实现 onTextMessageReceived
  }

  [@override](/user/override)
  void onMediaMessageReceived(MediaMessage mediaMessage) {
    // TODO: 实现 onMediaMessageReceived
    super.onMediaMessageReceived(mediaMessage);
  }

  [@override](/user/override)
  void onCustomMessageReceived(CustomMessage customMessage) {
    // TODO: 实现 onCustomMessageReceived
    super.onCustomMessageReceived(customMessage);
  }

  [@override](/user/override)
  void onMessagesRead(MessageReceipt messageReceipt) {
    // TODO: 实现 onMessagesRead
    super.onMessagesRead(messageReceipt);
  }

  [@override](/user/override)
  void onMessagesDelivered(MessageReceipt messageReceipt) {
    // TODO: 实现 onMessagesDelivered
  }

  [@override](/user/override)
  void onMessageEdited(BaseMessage message) {
    // TODO: 实现 onMessageEdited
  }

  [@override](/user/override)
  void onMessageDeleted(BaseMessage message) {
    // TODO: 实现 onMessageDeleted
  }

  [@override](/user/override)
  void onTypingStarted(TypingIndicator typingIndicator) {
    // TODO: 实现 onTypingStarted
  }

  [@override](/user/override)
  void onTypingEnded(TypingIndicator typingIndicator) {
    // TODO: 实现 onTypingEnded
    super.onTypingEnded(typingIndicator);
  }

  [@override](/user/override)
  void onTransientMessageReceived(TransientMessage message) {
    // TODO: 实现 onTransientMessageReceived
  }
}

更多关于Flutter即时通讯插件cometchat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter即时通讯插件cometchat的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用CometChat即时通讯插件的基本示例代码。这包括基本的初始化、用户登录和发送消息的步骤。

1. 安装CometChat Flutter SDK

首先,你需要在你的Flutter项目中安装CometChat Flutter SDK。可以通过在pubspec.yaml文件中添加依赖项来完成:

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

然后运行flutter pub get来安装依赖。

2. 初始化CometChat

在你的应用程序的入口文件(通常是main.dart)中初始化CometChat。

import 'package:flutter/material.dart';
import 'package:cometchat_pro/cometchat_pro.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await CometChat.init("YOUR_APP_ID", CometChat.REGION_TYPE_US);
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter CometChat Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 用户登录

接下来,你需要实现用户登录逻辑。这通常涉及发送用户凭证到服务器以获取一个有效的认证令牌。

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _formKey = GlobalKey<FormState>();
  String uid = "";
  String authKey = "";

  void _submit() {
    if (_formKey.currentState!.validate()) {
      _formKey.currentState!.save();

      // 假设你已经有了一个方法 `loginUser` 来处理登录逻辑
      loginUser(uid, authKey);
    }
  }

  void loginUser(String uid, String authKey) async {
    try {
      await CometChat.login(uid: uid, authKey: authKey);
      print("User logged in successfully");
      // 导航到聊天界面
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => ChatScreen()),
      );
    } catch (e) {
      print("Login failed: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Login'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: <Widget>[
              TextFormField(
                decoration: InputDecoration(labelText: 'UID'),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'UID is required';
                  }
                  return null;
                },
                onSaved: (value) {
                  uid = value!;
                },
              ),
              TextFormField(
                decoration: InputDecoration(labelText: 'Auth Key'),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Auth Key is required';
                  }
                  return null;
                },
                onSaved: (value) {
                  authKey = value!;
                },
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _submit,
                child: Text('Login'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

4. 发送消息

在聊天界面,你可以使用CometChat SDK发送消息。以下是一个简单的发送文本消息的示例:

import 'package:flutter/material.dart';
import 'package:cometchat_pro/cometchat_pro.dart';

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

class _ChatScreenState extends State<ChatScreen> {
  final TextEditingController _controller = TextEditingController();

  void _sendMessage() async {
    String text = _controller.text;
    if (text.isNotEmpty) {
      try {
        Message message = await CometChat.sendMessage(
          conversationId: "CONVERSATION_ID", // 替换为实际的会话ID
          text: text,
          receiverId: "RECEIVER_UID",        // 替换为实际的接收者UID(如果是一对一聊天)
          senderId: CometChat.getLoggedInUser()?.uid ?? "",
          type: CometChatMessageType.TEXT,
        );
        print("Message sent: $message");
        _controller.clear();
      } catch (e) {
        print("Failed to send message: $e");
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat Screen'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          children: <Widget>[
            // 假设这里有一个显示聊天记录的组件
            Expanded(
              child: ListView.builder(
                // 实现聊天记录的显示逻辑
              ),
            ),
            TextField(
              controller: _controller,
              decoration: InputDecoration(border: OutlineInputBorder()),
              onEditingComplete: _sendMessage,
              onSubmitted: (value) => _sendMessage(),
            ),
            SizedBox(height: 10),
            ElevatedButton(
              onPressed: _sendMessage,
              child: Text('Send'),
            ),
          ],
        ),
      ),
    );
  }
}

注意

  1. 替换占位符:确保替换所有占位符(如YOUR_APP_IDCONVERSATION_IDRECEIVER_UID)为实际的值。
  2. 错误处理:在生产环境中,请添加适当的错误处理和用户反馈。
  3. UI设计:上述示例中的UI设计非常简单,你可以根据需要进行自定义。

通过这些步骤,你应该能够在Flutter项目中成功集成并使用CometChat即时通讯插件。

回到顶部