doImTencentWebPluginInit function
Future<void>
doImTencentWebPluginInit({
- int? sdkAppId,
- bool initCall = true,
- EventChatListenerConfig? eventChatListener,
- EventCallListenerConfig? eventCallListener,
- String? userId,
- String? userSig,
执行插件的初始化
sdkAppIdint imSdkAppIdinitCallbool 是否同时初始化 音视频通话,默认 trueeventChatListenerEventChatListenerConfig 聊天事件监听eventCallListenerEventCallListenerConfig 音视频通话事件监听userIdString 登录 im 的用户 userIduserSigString 登录 im 的用户 userSig
应该有以下几个调用场景
1、程序初始化启动的时候,可以仅传入 sdkAppId、initCall、eventChatListener、eventCallListener;仅进行 im 的初始化,不进行登录
2、在条件允许的情况下(比如:登录业务完成后),拿到用户的 userId 和 userSig 之后,再次调用该方法。可以仅传入 userId、userSig;仅进行 im / call 的登录
3、都传入,同时进行 im 的初始化,然后再进而执行 im / call 的登录
4、都不传。会从缓存中获取存储的相关信息,拿到后进行 场景3 的执行;拿不到就报错,提示需要初始化参数,这个时候你应该重新按照 场景3 调用一次
注意以及调用方式说明
web 版本
- 在程序启动的位置(浏览器每次刷新都会执行的位置),调用场景 3
- 在登录页,登录执行完成的地方,拿到用户登录信息后,调用场景 3
- 在退出登录的地方,调用 退出doImTencentLogout 方法,将会清除相关的缓存,避免下次刷新浏览器因再次调用 场景4 而逻辑异常
import 'package:im_plugin_tencent_web/im/init.dart';
doImTencentLogout();
必须确保调用场景 2 之前,已调用 场景 1
Implementation
Future<void> doImTencentWebPluginInit({
int? sdkAppId,
bool initCall = true,
EventChatListenerConfig? eventChatListener,
EventCallListenerConfig? eventCallListener,
String? userId,
String? userSig,
}) async {
if (sdkAppId != null && (userId == null || userSig == null)) {
// 场景 1
if (kDebugMode) {
print('场景 1 =============================\n'
'已传入 im 初始化参数,准备初始化 im,并重置 im 相关的 sessionStorage 缓存\n'
'=============================');
}
ImState.setImSdkAppID(sdkAppId);
ImState.setInitCallInstance(initCall);
ImState.setChatEventChatListenerConfig(eventChatListener);
ImState.setCallEventCallListenerConfig(eventCallListener);
await ImPluginTencentWeb.initSdk(
sdkAppID: sdkAppId,
initCall: initCall,
eventChatListener: eventChatListener,
eventCallListener: eventCallListener,
);
} else if (sdkAppId == null && (userId != null && userSig != null)) {
// 场景 2
if (kDebugMode) {
print('场景 2 =============================\n'
'仅传入 im 登录参数,准备登录 im,并重置 im 相关的 sessionStorage 缓存\n'
'=============================');
}
await ImPluginTencentWeb.login(userID: userId, userSig: userSig);
} else if (sdkAppId != null && userId != null && userSig != null) {
// 场景 3
if (kDebugMode) {
print('场景 3 =============================\n'
'已传入 im 初始化参数和登录参数,准备初始化 im 且登录 im,并重置 im 相关的 sessionStorage 缓存\n'
'=============================');
}
ImState.setImSdkAppID(sdkAppId);
ImState.setInitCallInstance(initCall);
ImState.setChatEventChatListenerConfig(eventChatListener);
ImState.setCallEventCallListenerConfig(eventCallListener);
await ImPluginTencentWeb.initSdk(
sdkAppID: sdkAppId,
initCall: initCall,
eventChatListener: eventChatListener,
eventCallListener: eventCallListener,
);
await ImPluginTencentWeb.login(userID: userId, userSig: userSig);
} else if (sdkAppId == null && userId == null && userSig == null) {
}
}