跳到主要内容

Android 初始化与登录生命周期

底层 openim-core.aar 导出了静态入口类 io.openim.android.open_im_sdk.Open_im_sdk,所有方法签名与 Go open_im_sdk 包完全一致。


1. 初始化 SDK (initSDK)​

import io.openim.android.open_im_sdk.Open_im_sdk
import io.openim.android.open_im_sdk_callback.OnConnListener
import org.json.JSONObject
import java.util.UUID

val configJson = JSONObject().apply {
put("systemType", "android")
put("platformID", 2) // 2 = Android, 8 = AndroidPad
put("apiAddr", "https://im-api.qxj.com")
put("wsAddr", "wss://im-ws.qxj.com")
put("dataDir", context.filesDir.resolve("qxj_im_db").absolutePath)
put("logLevel", 4)
put("isLogStandardOutput", true)
put("logFilePath", context.filesDir.resolve("qxj_im_logs").absolutePath)
put("isExternalExtensions", false)
}.toString()

val initialized = Open_im_sdk.initSDK(object : OnConnListener {
override fun onConnecting() {}
override fun onConnectSuccess() {}
override fun onConnectFailed(errCode: Int, errMsg: String?) {}
override fun onKickedOffline() {}
override fun onUserTokenExpired() {}
override fun onUserTokenInvalid(errMsg: String?) {}
}, UUID.randomUUID().toString(), configJson)

2. 登录与登出 (login / logout)​

import io.openim.android.open_im_sdk_callback.Base

// 登录
Open_im_sdk.login(object : Base {
override fun onSuccess(data: String?) {
// 登录成功
}
override fun onError(errCode: Int, errMsg: String?) {
// 登录失败
}
}, UUID.randomUUID().toString(), userID, token)

// 登出
Open_im_sdk.logout(object : Base {
override fun onSuccess(data: String?) {}
override fun onError(errCode: Int, errMsg: String?) {}
}, UUID.randomUUID().toString())

3. 前后台状态与网络重连​

// App 切入后台 / 回到前台
Open_im_sdk.setAppBackgroundStatus(baseCallback, operationID, isBackground)

// 网络发生变化时通知底层立即重连
Open_im_sdk.networkStatusChanged(baseCallback, operationID)