initSdk method
SyIm.create / init → OpenIM.iMManager.initSDK
Implementation
Future<void> initSdk({required String dataDir, int? platformID}) async {
await _call('initSDK', () async {
await OpenIM.iMManager.initSDK(
platformID: platformID ?? _platformId,
apiAddr: imApiAddr,
wsAddr: imWsAddr,
dataDir: dataDir,
logLevel: 6,
listener: OnConnectListener(
onConnectSuccess: () => onConnectSuccess?.call(),
onConnecting: () => onConnecting?.call(),
onConnectFailed: (c, m) => onConnectFailed?.call(c, m),
onKickedOffline: () => onKickedOffline?.call(),
onUserTokenExpired: () => onUserTokenExpired?.call(),
),
);
await OpenIM.iMManager.messageManager.setAdvancedMsgListener(
OnAdvancedMsgListener(
onRecvNewMessage: (msg) => _emitIncoming(msg),
onRecvOfflineNewMessage: (msg) => _emitIncoming(msg),
onNewRecvMessageRevoked: (info) {
onMessageRevoked?.call(
SyImRevokedMessage(
clientMsgId: info.clientMsgID ?? '',
revokerId: info.revokerID,
revokerNickname: info.revokerNickname,
),
);
},
onRecvC2CReadReceipt: (list) {
onRecvC2CReadReceipt?.call(
list
.map(
(r) => SyImReadReceipt(
conversationId: SyImReadReceipts.singleConversationId(
_selfUserId ?? '',
r.userID ?? '',
),
userId: r.userID ?? '',
groupId: (r.groupID ?? '').isEmpty ? null : r.groupID,
msgIds: List<String>.from(
r.msgIDList ?? const <String>[],
),
readTime: r.readTime ?? 0,
),
)
.toList(),
);
},
),
);
await OpenIM.iMManager.conversationManager.setConversationListener(
OnConversationListener(
onNewConversation: (list) {
onConversationsChanged?.call(list.map(_mapConversation).toList());
onConversationUpdated?.call();
},
onConversationChanged: (list) {
onConversationsChanged?.call(list.map(_mapConversation).toList());
onConversationUpdated?.call();
},
onTotalUnreadMessageCountChanged: (count) {
onTotalUnreadChanged?.call(count);
},
onInputStatusChanged: (data) {
onTypingChanged?.call(
SyImTypingStatus.fromOpenIm(
userId: data.userID,
conversationId: data.conversationID,
platformIds: data.platformIDs,
),
);
},
),
);
});
_inited = true;
}