环境 | 版本 |
Flutter | IM SDK 最低要求 Flutter 3.0.0 版本,TUIKit 集成组件库最低要求 Flutter 3.16.0 版本。 |
Android | Android Studio Dolphin | 2021.3.1 及以上版本,App 要求 Android 7.0 及以上版本设备。 |
iOS | Xcode 12.0 及以上版本,请确保您的项目已设置有效的开发者签名。 |
平台 | |||
iOS | 支持 | 支持 | 支持 |
Android | 支持 | 支持 | 支持 |
支持,4.1.1+2版本起 | 支持,0.1.5版本起 | 即将支持... | |
支持,4.1.9版本起 | 支持,2.0.0版本起 | 支持 | |
Windows | 支持,4.1.9版本起 | 支持,2.0.0版本起 | 支持 |
混合开发 (将 Flutter SDK 添加至现有原生应用) | 5.0.0版本起支持 | 1.0.0版本起支持 | 支持 |
SDKAppID
。UserID
、签名(Key)
、UserSig
这三个,后续登录时会用到。UserSig
签发方式是由服务器端生成,并提供面向 App 的接口,在需要 UserSig
时由 App 向业务服务器发起请求获取动态 UserSig
。更多详情请参见 服务端生成 UserSig。集成方式 | 适用场景 |
IM 的 UI 组件库 UIKit 提供了通用的 UI 组件,例如会话列表、聊天界面和联系人列表等,开发者可根据实际业务需求通过该组件库快速地搭建自定义 IM 应用。推荐优先使用该方案。 | |
如果 UIKit 不能满足您应用的界面需求,或者您需要比较多的定制,可以使用该方案。 |
# Clone the codegit clone https://github.com/TencentCloud/chat-demo-flutter.git# Checkout the 'v2' branchgit checkout v2# Clean the project. Importantflutter clean# Install dependenciesflutter pub get
lib/config.dart
, 并且配置 sdkappid
, userid
, and usersig
从此前步骤获取的。flutter run
文件夹 | 介绍 |
lib | 程序核心目录 |
lib/desktop | 桌面端适配相关代码 |
lib/setting | 个人中心及设置页面相关代码 |
lib
目录中的 lib/main.dart
文件,为本 Demo 程序运行的核心文件。可以看到,有下面几行关键代码。将 List<Widget> pages
的组件列表,传入 bottomNavigation
进行页面切换。pages = [ const TencentCloudChatConversation(), const TencentCloudChatContact(), TencentCloudChatSettings( removeSettings: removeLocalSetting, setLoginState: changeLoginState, ), ];
TencentCloudChatConversation
会话列表组件和 TencentCloudChatContact
联系人组件,即可使用到全部 UIKit 关联组件,包括聊天组件,联系人及群组详情组件等。这些组件均可通过我们手动引入的组件,跳转过去。flutter pub add tencent_cloud_chat_sdk
initSDK
,完成 SDK 初始化。sdkAppID
传入。import 'package:tencent_cloud_chat_sdk/enum/V2TimSDKListener.dart';import 'package:tencent_cloud_chat_sdk/enum/log_level_enum.dart';import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';TencentImSDKPlugin.v2TIMManager.initSDK(sdkAppID: 0, // Replace 0 with the SDKAppID of your IM application when integratingloglevel: LogLevelEnum.V2TIM_LOG_DEBUG, // Loglistener: V2TimSDKListener(),);
TencentImSDKPlugin.v2TIMManager.login
方法,登录一个测试账户。res.code
为0时,登录成功。import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';V2TimCallback res = await TencentImSDKPlugin.v2TIMManager.login(userID: userID,userSig: userSig,);
UserSig
签发方式是将 UserSig
的计算代码集成到您的服务端,并提供面向 App 的接口,在需要 UserSig
时由您的 App 向业务服务器发起请求获取动态 UserSig
。更多详情请参见 服务端生成 UserSig。createTextMessage(String)
创建一个文本消息。sendMessage()
发送该ID的消息。receiver
可填入您此前创建的另一个测试账户 ID。发送单聊消息无需填入groupID
。import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';V2TimValueCallback<V2TimMsgCreateInfoResult> createMessage =await TencentImSDKPlugin.v2TIMManager.getMessageManager().createTextMessage(text: "The text to create");String id = createMessage.data!.id!; // The message creation IDV2TimValueCallback<V2TimMessage> res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessage(id: id, // Pass in the message creation ID toreceiver: "The userID of the destination user",groupID: "The groupID of the destination group",);
nextSeq
,记录当前位置。import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';String nextSeq = "0";getConversationList() async {V2TimValueCallback<V2TimConversationResult> res = await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationList(nextSeq: nextSeq, count: 10);nextSeq = res.data?.nextSeq ?? "0";}
await TencentImSDKPlugin.v2TIMManager.getConversationManager().setConversationListener(listener: new V2TimConversationListener(onConversationChanged: (List<V2TimConversation> list){_onConversationListChanged(list);},onNewConversation:(List<V2TimConversation> list){_onConversationListChanged(list);},
import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';List<V2TimConversation> _conversationList = [];_onConversationListChanged(List<V2TimConversation> list) {for (int element = 0; element < list.length; element++) {int index = _conversationList.indexWhere((item) => item!.conversationID == list[element].conversationID);if (index > -1) {_conversationList.setAll(index, [list[element]]);} else {_conversationList.add(list[element]);}}
import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';V2TimValueCallback<List<V2TimMessage>> res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().getGroupHistoryMessageList(groupID: "groupID",count: 20,lastMsgID: "",);List<V2TimMessage> msgList = res.data ?? [];// here you can use msgList to render your message list}
V2TimAdvancedMsgListener.onRecvNewMessage
。onRecvNewMessage
回调被触发后,您可以按需将新消息添加进历史消息列表中。import 'package:tencent_cloud_chat_sdk/tencent_cloud_chat_sdk.dart';final adVancesMsgListener = V2TimAdvancedMsgListener(onRecvNewMessage: (V2TimMessage newMsg) {_onReceiveNewMsg(newMsg);},/// ... other listeners related to message);TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener: adVancesMsgListener);
flutter create .
添加 Web 支持。web/
目录,使用 npm
或 yarn
安装相关JS依赖。初始化项目时,根据屏幕指引,进行即可。cd webnpm initnpm i @tencentcloud/chatnpm i tim-upload-plugin
web/index.html
,在 <head> </head>
间引入这JS文件。如下:<script src="./node_modules/tim-upload-plugin/index.js"></script><script src="./node_modules/@tencentcloud/chat/index.js"></script> <script src="./node_modules/@tencentcloud/chat/modules/group-module.js"></script> <script src="./node_modules/@tencentcloud/chat/modules/relationship-module.js"></script> <script src="./node_modules/@tencentcloud/chat/modules/signaling-module.js"></script>
macos/Runner/DebugProfile.entitlements
和 macos/Runner/Release.entitlements
文件。<key>com.apple.security.network.client</key><true/>
pod install
或 flutter run
ios/Pods
文件夹,及 ios/Podfile.lock
文件,并执行如下命令,重新安装依赖cd iossudo gem install ffipod install --repo-update
Nuget.exe not found, trying to download or use cached version.
nuget.exe
,因此程序尝试下载或使用缓存的版本。nuget.exe
是 NuGet 包管理器的命令行工具,用于在 .NET
项目中管理依赖项。nuget.exe
。以下是操作步骤:nuget.exe
。nuget.exe
文件保存到一个合适的位置,例如 C:\\NuGet
。nuget.exe
的路径添加到系统的环境变量 PATH
中。这样,您就可以在命令行中全局访问 nuget.exe
。
本页内容是否解决了您的问题?