- Android
- iOS
- JavaScript
- Flutter
- 鸿蒙
可以设置多个监听。
JIM.getInstance().getConnectionManager().addConnectionStatusListener("main", new IConnectionManager.IConnectionStatusListener() {
/// 连接状态变化的回调
/// - Parameters:
/// - status: 变化后的状态
/// - code: 连接错误码,在 JIMConst.ConnectionStatus.FAILURE 状态时有效,其它状态均为 0。
/// - extra: 附加信息
@Override
public void onStatusChange(JIMConst.ConnectionStatus status, int code, String extra) {
if (status == JIMConst.ConnectionStatus.CONNECTED) {
Log.i("TAG", "SDK connect success");
}
}
/// 数据库打开的回调,设备离线的情况下也可以打开本地数据库查看历史消息
@Override
public void onDbOpen() {
Log.i("TAG", "onDbOpen");
}
@Override
public void onDbClose() {
}
});
可以设置多个代理。
[JIM.shared.connectionManager addDelegate:self];
/// 数据库打开的回调,设备离线的情况下也可以打开本地数据库查看历史消息
- (void)dbDidOpen {
NSLog(@"dbDidOpen");
}
/// 连接状态变化的回调
/// - Parameters:
/// - status: 变化后的状态
/// - code: 连接错误码,在 JConnectionStatusFailure 状态时有效,其它状态均为 0。
/// - extra: 附加信息
- (void)connectionStatusDidChange:(JConnectionStatus)status
errorCode:(JErrorCode)code
extra:(NSString *)extra {
if (JConnectionStatusConnected == status) {
NSLog(@"SDK connect success");
}
}
全局只需设置一次,多次设置会覆盖,除 connect 方法外,其他所有 SDK 方法必须在连接成功后调用,Event 说明请查看 监听枚举
let { Event, ConnectionState } = JIM;
jim.on(Event.STATE_CHANGED, ({ state, user }) => {
if(ConnectionState.CONNECTING == state){
console.log('im is connecting');
}
if(ConnectionState.CONNECTED == state){
console.log('im is connected', user);
}
// SDK 内部有重连机制,开发者业务层无须重连,重连失败或主动断开都会触发 DISCONNECTED 状态
if(ConnectionState.DISCONNECTED == state){
console.log('im is disconnected');
}
});
可以设置多个监听。
JuggleIm.instance.getConnectionManager().addConnectStatusListener((status,code)=>{
if(status === ConnStatus.Connected){
}
})
连接监听仅支持设置一次,多次设置会覆盖之前的监听,如果有多处监听,建议在一个监听中处理所有状态,在业务层进行做二次事件分发。
示例代码
JuggleIm.instance.onConnectionStatusChange = (int connectionStatus, int code, String extra){
if(connectionStatus == SDKConnectionStatus.CONNECTED){
// 连接成功
}
if(connectionStatus == SDKConnectionStatus.CONNECTING){
// 连接中
}
if(connectionStatus == SDKConnectionStatus.DISCONNECTED){
// 连接断开
}
if(connectionStatus == SDKConnectionStatus.FAILURE){
// 连接失败 ,code 为错误码,extra 为错误信息
}
}
// 数据库打开的回调,设备离线的情况下也可以打开本地数据库查看历史消息
JuggleIm.instance.onDbOpen = () {
};