setTencentImParamsAndLoginByCached function
Future<void>
setTencentImParamsAndLoginByCached({
- int? sdkAppId,
- bool initCall = true,
- EventChatListenerConfig? eventChatListener,
- EventCallListenerConfig? eventCallListener,
从缓存中初始化参数
从缓存中初始化 imSdkAppID、initCall、imLoginInfo
也可以传入新的 initCall、eventChatListener、eventCallListener
如果传入了 sdkAppId 参数,则自动直接执行方法:doImTencentWebPluginInitWhenApplicationInit
navigatorKey 如果你选择初始化了音视频通话,那么这个参数必须传。作用是当接收到音视频通话邀请的时候,显示全局的浮层展示通话邀请与展开音视频通话
// 你的程序入口或许是这样
MaterialApp(
navigatorKey: xxx,
...
)
Implementation
Future<void> setTencentImParamsAndLoginByCached({
int? sdkAppId,
bool initCall = true,
GlobalKey<NavigatorState>? navigatorKey,
EventChatListenerConfig? eventChatListener,
EventCallListenerConfig? eventCallListener,
}) async {
String? imSdkAppId = sdkAppId?.toString().trimEmptyToNull() ?? await getCatch('imSdkAppID');
if (imSdkAppId != null) {
ImState.setImSdkAppID(int.parse(imSdkAppId));
ImState.setInitCallInstance(initCall);
ImState.setChatEventChatListenerConfig(eventChatListener);
ImState.setCallEventCallListenerConfig(eventCallListener);
ImState.applicationNavigatorKey = navigatorKey;
await ImPluginTencent.initSdk(
sdkAppID: int.parse(imSdkAppId),
initCall: initCall,
eventChatListener: eventChatListener,
eventCallListener: eventCallListener,
);
try {
String? imLoginInfoStr = await getCatch('imLoginInfo');
if (imLoginInfoStr != null) {
ImLoginInfoEntity imLoginInfo = ImLoginInfoEntity.fromJson(jsonDecode(imLoginInfoStr));
try {
await ImPluginTencent.login(userID: imLoginInfo.userId, userSig: imLoginInfo.userSig);
} catch(e, stackTrace) {
throw ImException(code: 203, err: e, stackTrace: stackTrace);
}
} else {
throw ImException(code: 201, message: '缓存中不存在 imLoginInfo');
}
} catch(e) {
throw ImException(code: 202, message: '解析 imLoginInfo 缓存出错');
}
} else {
throw ImException(code: 101, message: '未找到可用的 imSdkAppID 参数');
}
}