logout
退出登录
功能介绍
说明
APP需等待退出登录回调成功
退出登录成功后,不会再收到其他人发送的新消息。
如果切换账号,需要等待用户 A 的 logout 回调成功后再调用用户 B 的 login,否则 login 可能会失败。
如果 APP 生命周期跟 SDK 生命周期一致,可以在用户退出 APP 时,调用 logout
注意
(1)当收到来自 SDK 的onKickedOffline和onUserTokenExpired时,意味着被踢下线、token无效或者token过期,
SDK 在内部触发后,会自动调用退出logout,无需外部调用退出登录函数。
- iOS
- Android
- Flutter
- uni-app
- Browser/Electron/MiniProgram
- React-Native
- Unity
函数原型
Future<dynamic> logout({String? operationID})
输入参数
无
返回结果
参数名称 | 参数类型 | 描述 |
---|---|---|
~ | ~ | 无异常则登出成功 |
代码示例
await OpenIM.iMManager.logout();
//todo
函数原型
- (void)logoutWithOnSuccess:(nullable OIMSuccessCallback)onSuccess
onFailure:(nullable OIMFailureCallback)onFailure;
输入参数
无
返回结果
参数名称 | 参数类型 | 描述 |
---|---|---|
onSuccess | OIMSuccessCallback | 成功返回 |
onFailure | OIMFailureCallback | 失败返回 |
代码示例
[OIMManager.manager logoutWithOnSuccess:^(NSString * _Nullable data) {
} onFailure:^(NSInteger code, NSString * _Nullable msg) {
}];
函数原型
public void logout(OnBase<String> base)
参数详解
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
base | OnBase | 是 | 回调接口 |
代码示例
OpenIMClient.getInstance().logout(new OnBase<String>() {
@Override
public void onError(int code, String error) {
//退出登录失败
}
@Override
public void onSuccess(String data) {
//退出登录成功
}
});
函数原型
IMSDK.logout(): Promise<WsResponse>;
输入参数
无
返回结果
参数名称 | 参数类型 | 描述 |
---|---|---|
Promise.then() | Promise<WsResponse> | 调用成功回调 |
Promise.catch() | Promise<WsResponse> | 调用失败回调 |
代码示例
import { getSDK } from '@openim/wasm-client-sdk';
const IMSDK = getSDK();
// use in electron with ffi
// import { getWithRenderProcess } from '@openim/electron-client-sdk/lib/render';
// const { instance: IMSDK } = getWithRenderProcess();
// use in mini program
// import { OpenIMSDK } from 'open-im-sdk';
// const IMSDK = new OpenIMSDK();
const status = IMSDK.logout()
.then(() => {
// 退出登录成功
})
.catch(({ errCode, errMsg }) => {
// 调用失败
});
函数原型
IMSDK.asyncApi('logout',operationID: string): Promise<void>;
输入参数
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
operationID | string | 是 | 操作 ID,用于定位问题,保持唯一,建议用当前时间和随机数 |
返回结果
通过
openim-uniapp-polyfill
包将函数 Promise 化,调用时需要使用then
和catch
判断并处理成功和失败回调。
参数名称 | 参数类型 | 描述 |
---|---|---|
Promise.then() | Promise<void> | 调用成功回调 |
Promise.catch() | Promise<CatchResponse> | 调用失败回调 |
代码示例
import IMSDK from 'openim-uniapp-polyfill';
IMSDK.asyncApi('logout', IMSDK.uuid())
.then(() => {
// 退出登录成功
})
.catch(({ errCode, errMsg }) => {
// 调用失败
});
函数原型
OpenIMSDKRN.logout(operationID: string): Promise<void>
参数详解
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
operationID | string | 是 | 操作 ID,用于定位问题,保持唯一,建议用当前时间和随机数 |
返回结果
参数名称 | 参数类型 | 描述 |
---|---|---|
Promise.then() | Promise<void> | 调用成功回调 |
Promise.catch() | Promise<CatchResponse> | 调用失败回调 |
代码示例
import OpenIMSDKRN from "open-im-sdk-rn";
OpenIMSDKRN.logout("operationID")
.then(() => {
// 退出登录成功
})
.catch(({ errCode, errMsg }) => {
// 调用失败
});
函数原型
public static void Logout(OnSucOrError cb)
参数详解
参数名称 | 参数类型 | 是否必填 | 描述 |
---|---|---|---|
cb | OnSucOrError | 是 | 失败成功回调 |
代码示例
IMSDK.Logout((suc, errCode, errMsg) =>
{
if (suc)
{
Debug.Log("Call UnLogin:" + true);
}
else
{
Debug.Log("Call UnLogin:" + errCode + errMsg);
}
});