Flutter即时通讯插件flutter_twilio_conversations的使用

Flutter即时通讯插件flutter_twilio_conversations的使用

通过 Diversido 提供

flutter_twilio_conversations

该插件基于 Twilio Programmable Chat Plugin。我们决定重新制作并基于 Twilio Conversations SDK,因为 Twilio Programmable Chat 将在今年停止服务。这并不是官方插件,仍需要一些修复和进一步维护。如果有任何问题,请不要向 Twilio 报告问题,而是提交一个 issue 而不是联系支持。

安装插件

运行以下命令:

# 运行以下命令
$ dart pub add flutter_twilio_conversations

设置

无需特殊设置,大部分关于控制台设置的提示可以在 Twilio 的原生 SDK 指南 中找到。

支持的平台

  • Android
  • iOS
  • Web

平台特定细节

iOS 和 Android SDK 在推送通知方面采用了不同的方法。主要区别包括:

iOS

  1. iOS SDK 使用 APNs,而 Android 使用 FCM。
  2. iOS SDK 处理接收和显示推送通知。
  3. 由于 APNs 令牌格式在不同 iOS 实现中有所变化,我们在注册时从操作系统获取令牌,而不是尝试预测在应用的不同层之间传输令牌时可能使用的编码方式或令牌格式。

Android

  1. Android SDK 提供了对 GCM 和 FCM 的选项。由于 Google 已经基本弃用了 GCM,我们选择仅处理 FCM。
  2. Android SDK 不接收消息或处理通知。
  3. 我们选择不将 firebase 依赖引入到插件中,而是让用户自行处理令牌检索、消息和通知处理。
    • 示例可以在示例应用中看到。
    • 示例应用实现中的重要部分包括:
      • main.dart - 配置 FirebaseMessaging 消息处理器,初始化 FlutterLocalNotificationsPlugin,并创建通知通道。

开发和贡献

欢迎通过创建合并请求进行贡献!

示例代码

下面是示例代码 main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:redux/redux.dart';
import 'package:flutter_twilio_conversations_example/app.dart'; // 假设这是一个包含应用主入口的文件
import 'package:flutter_twilio_conversations_example/redux/effects/subscriptions_middleware.dart';
import 'package:flutter_twilio_conversations_example/redux/effects/twilio_middleware.dart';
import 'package:flutter_twilio_conversations_example/redux/effects/ui_middleware.dart';
import 'package:flutter_twilio_conversations_example/redux/reducers/app_reducer.dart';
import 'package:flutter_twilio_conversations_example/redux/states/app_state.dart';

void main() {
  // 初始化小部件绑定
  WidgetsFlutterBinding.ensureInitialized();
  
  // 设置屏幕方向为竖屏
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
  ]);
  
  // 创建 Redux 存储实例
  final store = Store<AppState>(
    AppReducer(), // 应用的根 reducer
    initialState: AppState.initial(), // 初始状态
    middleware: [
      UiMiddleware(), // UI 中间件
      TwilioMiddleware(), // Twilio 中间件
      MessengerSubscriptionsMiddleware(), // 消息订阅中间件
    ],
  );

  // 运行应用
  runApp(
    App(
      store: store, // 将存储传递给应用
    ),
  );
}

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

1 回复

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


flutter_twilio_conversations 是一个用于在 Flutter 应用中集成 Twilio Conversations 功能的插件。它允许你在应用中进行即时通讯(即时消息、聊天等)。以下是如何使用 flutter_twilio_conversations 插件的基本指南。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 flutter_twilio_conversations 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_twilio_conversations: ^1.0.0  # 请根据最新版本号进行更新

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在你的 Dart 代码中,首先需要初始化 Twilio Conversations 插件。

import 'package:flutter_twilio_conversations/flutter_twilio_conversations.dart';

void initializeTwilio() async {
  try {
    await TwilioConversations.initialize();
    print("Twilio Conversations initialized successfully.");
  } catch (e) {
    print("Failed to initialize Twilio Conversations: $e");
  }
}

3. 登录和身份验证

要使用 Twilio Conversations,你需要使用 Twilio 的访问令牌(Access Token)进行身份验证。你通常需要从服务器获取这个令牌。

void login(String accessToken) async {
  try {
    await TwilioConversations.login(accessToken);
    print("Logged in successfully.");
  } catch (e) {
    print("Failed to login: $e");
  }
}

4. 加入对话

一旦你登录成功,你可以加入一个对话(Conversation)。

void joinConversation(String conversationSid) async {
  try {
    await TwilioConversations.joinConversation(conversationSid);
    print("Joined conversation successfully.");
  } catch (e) {
    print("Failed to join conversation: $e");
  }
}

5. 发送消息

在加入对话后,你可以发送消息。

void sendMessage(String conversationSid, String message) async {
  try {
    await TwilioConversations.sendMessage(conversationSid, message);
    print("Message sent successfully.");
  } catch (e) {
    print("Failed to send message: $e");
  }
}

6. 接收消息

你可以通过监听事件来接收消息。

void listenForMessages() {
  TwilioConversations.onMessageAdded.listen((message) {
    print("New message received: ${message.body}");
  });
}

7. 离开对话

如果你想离开对话,可以调用 leaveConversation 方法。

void leaveConversation(String conversationSid) async {
  try {
    await TwilioConversations.leaveConversation(conversationSid);
    print("Left conversation successfully.");
  } catch (e) {
    print("Failed to leave conversation: $e");
  }
}

8. 注销

最后,当你不再需要 Twilio Conversations 时,可以注销。

void logout() async {
  try {
    await TwilioConversations.logout();
    print("Logged out successfully.");
  } catch (e) {
    print("Failed to logout: $e");
  }
}

9. 处理错误和异常

确保在每一步都处理可能的错误和异常,以保证应用的稳定性。

10. 生命周期管理

StatefulWidget 中,确保在 dispose 方法中释放资源。

[@override](/user/override)
void dispose() {
  TwilioConversations.dispose();
  super.dispose();
}
回到顶部