Flutter即时通讯插件flutter_zcyim_sdk的使用
1. 添加依赖到yaml
在pubspec.yaml
文件中添加flutter_zcyim_sdk
依赖:
dependencies:
flutter_zcyim_sdk: latest
执行以下命令来安装依赖:
flutter pub get
2. 导入包
在需要使用插件功能的文件中导入:
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
3. 初始化SDK
在应用启动时进行SDK初始化。确保提供正确的API地址、WebSocket地址和数据存储路径。
void initSDK() async {
await OpenIM.iMManager.initSDK(
platform: 0, // 平台,参照IMPlatform类
apiAddr: "http://your_api_address", // SDK的API接口地址
wsAddr: "ws://your_websocket_address", // SDK的WebSocket地址
dataDir: (await getApplicationDocumentsDirectory()).path, // 数据存储路径
objectStorage: 'cos', // 图片服务器,默认'cos'
logLevel: 6, // 日志等级,默认值6
listener: OnConnectListener(
onConnectSuccess: () {
print("已成功连接到服务器");
},
onConnecting: () {
print("正在连接到服务器...");
},
onConnectFailed: (code, errorMsg) {
print("连接失败,错误码: $code, 错误信息: $errorMsg");
},
onUserSigExpired: () {
print("登录票据已过期,请重新登录");
},
onKickedOffline: () {
print("您已在其他设备上登录,是否重新登录?");
},
),
).then((value) {
if (value == true) {
print("SDK初始化成功");
}
});
}
4. 设置监听器
设置监听器以接收各种事件通知。
void setupListeners() {
OpenIM.iMManager
..userManager.setUserListener(OnUserListener(
onSelfInfoUpdated: (userInfo) {
print("当前登录用户信息已更新: $userInfo");
},
))
..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
onRecvNewMessage: (message) {
print("收到新消息: $message");
},
onRecvMessageRevoked: (messageID) {
print("消息已被撤回: $messageID");
},
onRecvC2CReadReceipt: (list) {
print("消息已读回执: $list");
},
))
..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
onProgress: (messageID, progress) {
print("消息发送进度: $messageID, 进度: $progress%");
},
))
..friendshipManager.setFriendshipListener(OnFriendshipListener(
onFriendApplicationRejected: (applicationInfo) {
print("好友申请被拒绝: $applicationInfo");
},
onFriendApplicationDeleted: (applicationInfo) {
print("好友申请被删除: $applicationInfo");
},
onFriendApplicationAdded: (applicationInfo) {
print("好友申请已添加: $applicationInfo");
},
onFriendApplicationAccepted: (applicationInfo) {
print("好友申请已同意: $applicationInfo");
},
onFriendAdded: (friendInfo) {
print("好友已添加: $friendInfo");
},
onFriendDeleted: (friendInfo) {
print("好友已删除: $friendInfo");
},
onFriendInfoChanged: (friendInfo) {
print("好友信息已更新: $friendInfo");
},
onBlacklistDeleted: (blackInfo) {
print("已从黑名单移除: $blackInfo");
},
onBlacklistAdded: (blackInfo) {
print("已拉入黑名单: $blackInfo");
},
))
..conversationManager.setConversationListener(OnConversationListener(
onNewConversation: (list) {
print("新增会话: $list");
},
onConversationChanged: (list) {
print("已有会话发生改变: $list");
},
onTotalUnreadMessageCountChanged: (count) {
print("未读消息总数已更新: $count");
},
))
..groupManager.setGroupListener(OnGroupListener(
onGroupMemberInfoChanged: (memberInfo) {
print("组成员信息已更新: $memberInfo");
},
onGroupMemberDeleted: (memberInfo) {
print("组成员已退出: $memberInfo");
},
onGroupMemberAdded: (memberInfo) {
print("组成员已加入: $memberInfo");
},
onGroupApplicationRejected: (applicationInfo) {
print("组申请被拒绝: $applicationInfo");
},
onGroupApplicationDeleted: (applicationInfo) {
print("组申请被删除: $applicationInfo");
},
onGroupApplicationAdded: (applicationInfo) {
print("组申请已新增: $applicationInfo");
},
onGroupApplicationAccepted: (applicationInfo) {
print("组申请已被接受: $applicationInfo");
},
onJoinedGroupDeleted: (groupInfo) {
print("退出群组: $groupInfo");
},
onJoinedGroupAdded: (groupInfo) {
print("加入群组: $groupInfo");
},
onGroupInfoChanged: (groupInfo) {
print("组资料已变更: $groupInfo");
},
))
..signalingManager.setSignalingListener(OnSignalingListener(
onReceiveNewInvitation: (info) {
print("收到音视频通话邀请: $info");
},
onInviteeRejected: (info) {
print("被邀请者拒绝音视频通话: $info");
},
onInviteeAccepted: (info) {
print("被邀请者同意音视频通话: $info");
},
onInvitationTimeout: (info) {
print("邀请超时未接通: $info");
},
onInvitationCancelled: (info) {
print("邀请被取消: $info");
},
));
}
5. 登录
使用login
方法进行登录操作。
void login() async {
await OpenIM.iMManager.login(
uid: "your_user_id", // 用户ID
token: "your_token", // Token
).then((userInfo) {
print("登录成功,当前用户信息: $userInfo");
}).catchError((error) {
print("登录失败: $error");
});
}
示例代码完整示例
以下是一个完整的示例代码,展示了如何初始化、登录、设置监听器并处理基本的IM功能。
import 'package:flutter/material.dart';
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
initSDK();
setupListeners();
}
void initSDK() async {
await OpenIM.iMManager.initSDK(
platform: 0,
apiAddr: "http://your_api_address",
wsAddr: "ws://your_websocket_address",
dataDir: (await getApplicationDocumentsDirectory()).path,
objectStorage: 'cos',
logLevel: 6,
listener: OnConnectListener(
onConnectSuccess: () {
print("已成功连接到服务器");
},
onConnecting: () {
print("正在连接到服务器...");
},
onConnectFailed: (code, errorMsg) {
print("连接失败,错误码: $code, 错误信息: $errorMsg");
},
onUserSigExpired: () {
print("登录票据已过期,请重新登录");
},
onKickedOffline: () {
print("您已在其他设备上登录,是否重新登录?");
},
),
).then((value) {
if (value == true) {
print("SDK初始化成功");
}
});
}
void setupListeners() {
OpenIM.iMManager
..userManager.setUserListener(OnUserListener(
onSelfInfoUpdated: (userInfo) {
print("当前登录用户信息已更新: $userInfo");
},
))
..messageManager.setAdvancedMsgListener(OnAdvancedMsgListener(
onRecvNewMessage: (message) {
print("收到新消息: $message");
},
onRecvMessageRevoked: (messageID) {
print("消息已被撤回: $messageID");
},
onRecvC2CReadReceipt: (list) {
print("消息已读回执: $list");
},
))
..messageManager.setMsgSendProgressListener(OnMsgSendProgressListener(
onProgress: (messageID, progress) {
print("消息发送进度: $messageID, 进度: $progress%");
},
))
..friendshipManager.setFriendshipListener(OnFriendshipListener(
onFriendApplicationRejected: (applicationInfo) {
print("好友申请被拒绝: $applicationInfo");
},
onFriendApplicationDeleted: (applicationInfo) {
print("好友申请被删除: $applicationInfo");
},
onFriendApplicationAdded: (applicationInfo) {
print("好友申请已添加: $applicationInfo");
},
onFriendApplicationAccepted: (applicationInfo) {
print("好友申请已同意: $applicationInfo");
},
onFriendAdded: (friendInfo) {
print("好友已添加: $friendInfo");
},
onFriendDeleted: (friendInfo) {
print("好友已删除: $friendInfo");
},
onFriendInfoChanged: (friendInfo) {
print("好友信息已更新: $friendInfo");
},
onBlacklistDeleted: (blackInfo) {
print("已从黑名单移除: $blackInfo");
},
onBlacklistAdded: (blackInfo) {
print("已拉入黑名单: $blackInfo");
},
))
..conversationManager.setConversationListener(OnConversationListener(
onNewConversation: (list) {
print("新增会话: $list");
},
onConversationChanged: (list) {
print("已有会话发生改变: $list");
},
onTotalUnreadMessageCountChanged: (count) {
print("未读消息总数已更新: $count");
},
))
..groupManager.setGroupListener(OnGroupListener(
onGroupMemberInfoChanged: (memberInfo) {
print("组成员信息已更新: $memberInfo");
},
onGroupMemberDeleted: (memberInfo) {
print("组成员已退出: $memberInfo");
},
onGroupMemberAdded: (memberInfo) {
print("组成员已加入: $memberInfo");
},
onGroupApplicationRejected: (applicationInfo) {
print("组申请被拒绝: $applicationInfo");
},
onGroupApplicationDeleted: (applicationInfo) {
print("组申请被删除: $applicationInfo");
},
onGroupApplicationAdded: (applicationInfo) {
print("组申请已新增: $applicationInfo");
},
onGroupApplicationAccepted: (applicationInfo) {
print("组申请已被接受: $applicationInfo");
},
onJoinedGroupDeleted: (groupInfo) {
print("退出群组: $groupInfo");
},
onJoinedGroupAdded: (groupInfo) {
print("加入群组: $groupInfo");
},
onGroupInfoChanged: (groupInfo) {
print("组资料已变更: $groupInfo");
},
))
..signalingManager.setSignalingListener(OnSignalingListener(
onReceiveNewInvitation: (info) {
print("收到音视频通话邀请: $info");
},
onInviteeRejected: (info) {
print("被邀请者拒绝音视频通话: $info");
},
onInviteeAccepted: (info) {
print("被邀请者同意音视频通话: $info");
},
onInvitationTimeout: (info) {
print("邀请超时未接通: $info");
},
onInvitationCancelled: (info) {
print("邀请被取消: $info");
},
));
}
void login() async {
await OpenIM.iMManager.login(
uid: "your_user_id",
token: "your_token",
).then((userInfo) {
print("登录成功,当前用户信息: $userInfo");
}).catchError((error) {
print("登录失败: $error");
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('IM Plugin Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: login,
child: Text("登录"),
),
],
),
),
),
);
}
}
更多关于Flutter即时通讯插件flutter_zcyim_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter即时通讯插件flutter_zcyim_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_zcyim_sdk
是一个用于在 Flutter 应用中实现即时通讯功能的插件。以下是如何使用该插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_zcyim_sdk
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_zcyim_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在你的 Flutter 应用中,首先需要初始化 flutter_zcyim_sdk
。通常,你可以在 main.dart
或应用的入口文件中进行初始化。
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 SDK
await FlutterZcyimSdk.init(
appKey: 'your_app_key',
appSecret: 'your_app_secret',
);
runApp(MyApp());
}
3. 用户登录
在用户登录时,你需要调用 login
方法来登录到即时通讯服务器。
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
void loginUser(String userId, String token) async {
try {
await FlutterZcyimSdk.login(userId: userId, token: token);
print('登录成功');
} catch (e) {
print('登录失败: $e');
}
}
4. 发送消息
你可以使用 sendMessage
方法来发送消息。
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
void sendTextMessage(String targetId, String text) async {
try {
await FlutterZcyimSdk.sendMessage(
targetId: targetId,
messageType: 'text',
content: text,
);
print('消息发送成功');
} catch (e) {
print('消息发送失败: $e');
}
}
5. 接收消息
你可以通过监听消息事件来接收消息。
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
void listenForMessages() {
FlutterZcyimSdk.onMessageReceived.listen((message) {
print('收到消息: ${message.content}');
});
}
6. 用户登出
在用户登出时,调用 logout
方法。
import 'package:flutter_zcyim_sdk/flutter_zcyim_sdk.dart';
void logoutUser() async {
try {
await FlutterZcyimSdk.logout();
print('登出成功');
} catch (e) {
print('登出失败: $e');
}
}
7. 其他功能
flutter_zcyim_sdk
可能还提供了其他功能,如群组管理、好友管理、消息撤回等。你可以参考插件的官方文档或源码来了解更多细节。
8. 处理错误
在使用 SDK 时,可能会遇到各种错误。确保你正确处理这些错误,并提供适当的用户反馈。
try {
// 调用 SDK 方法
} catch (e) {
print('发生错误: $e');
// 处理错误
}
9. 释放资源
在应用退出时,确保释放 SDK 占用的资源。
void dispose() {
FlutterZcyimSdk.dispose();
}
10. 调试和日志
你可以启用 SDK 的调试模式来查看详细的日志信息。
FlutterZcyimSdk.setDebugMode(true);