看板 OEM SDK集成与使用
修改历史
| 日期 | 版本号 | 修改内容 |
|---|---|---|
| 2026.04.21 | v1.0.0 | 新增看板 OEM SDK集成与使用文档 |
一、概述
本文介绍如何在宿主 Android 工程中集成看板 OEM SDK,并参考 OEM 示例工程中的 App.kt 完成统一初始化。完成接入后,宿主可基于 OEM 渠道能力加载看板相关页面与业务能力。
二、前提条件
三、集成
3.1 编辑 app 目录下 build.gradle
获取最新版本:SDK最新版本
dependencies {
// 看板 OEM SDK
implementation "com.lumi.module.oem:home:1.0.3"
}
3.2 初始化说明
看板 OEM SDK 使用绿米 Android SDK 的统一初始化方式,不对 OEM 模块执行单独初始化。宿主在 Application 中通过 LumiCoreManager 完成一次初始化,并将 sdkChannel 指定为 LumiSDKChannel.CHANNEL_OEM_SDK。
接入要点如下:
- 推荐初始化在
Application.onCreate()中尽早执行 init(...)多次调用无效;更新参数时调用统一更新能力ILumiUserInfo返回真实的用户 ID、Token、区域、多语言及设备支持地区extensions用于补充 H5 地址等扩展配置
四、使用
4.1 Application 中完成 OEM SDK 初始化
以下示例参考 OEM 示例工程中的 App.kt 写法整理:
class App : Application() {
override fun onCreate() {
super.onCreate()
val extensions = hashMapOf(
"BaseH5UrlV2" to "https://cdn.aqara.com/cdn/luoshu/mainland/app-h5/device/index.html#",
"AQARA_TOOL_BASE_URL" to "https://cdn.aqara.com/cdn/luoshu/mainland/app-test-h5/huiruitong-h5/index.html#"
)
LumiCoreManager.getInstance().init(
this,
BuildConfig.DEBUG,
LumiCoreManager.LumiCoreSDKConfig.builder()
.appId(BuildConfig.AppID)
.appKey(BuildConfig.AppKey)
.baseImageUrl("https://cdn.aqara.com/cdn/common/mainland/prd/statics/default")
.baseDocsUrl("https://cdn.aqara.com/cdn/app/mainland/static/docs/")
.extensions(extensions)
.sdkChannel(LumiSDKChannel.CHANNEL_OEM_SDK)
.userInfo(object : ILumiUserInfo {
override fun is12HourFormat(): Boolean {
return !DateFormat.is24HourFormat(this@App)
}
override fun getCountry(): String {
return LocationHelper.getCountryCode()
}
override fun getSupportDeviceArea(): String {
return LocationHelper.getSupportDeviceArea()
}
override fun getCoapServer(): String {
return LocationHelper.getFastlinkUrl()
}
override fun getUserId(): String? {
return SessionManager.getInstance().getUser()?.getUserId().orEmpty()
}
override fun getUserToken(): String? {
return SessionManager.getInstance().getUserToken()?.getUserToken().orEmpty()
}
override fun getArea(): String {
return SessionManager.getInstance().getAppConfig()?.getArea().orEmpty()
}
override fun getLanguage(): String {
return LanguageUtil.getLanguage()
}
})
.build()
)
}
}
4.2 关键参数说明
| 字段 | 类型 | 说明 | 来源 |
|---|---|---|---|
appId |
String |
应用唯一标识 | Aqara 开发者平台 |
appKey |
String |
应用密钥 | Aqara 开发者平台 |
baseImageUrl |
String |
图片资源基础地址 | Aqara 平台分配或项目约定 |
baseDocsUrl |
String |
文档资源基础地址 | Aqara 平台分配或项目约定 |
extensions |
HashMap<String, String> |
扩展配置,如 H5 地址、工具页地址 | 宿主项目配置 |
sdkChannel |
LumiSDKChannel |
SDK 渠道标识,OEM 场景固定为 CHANNEL_OEM_SDK |
宿主设置 |
is12HourFormat() |
Boolean |
时间制式,决定部分时间展示格式 | 系统设置 |
getCountry() |
String |
当前国家码 | 定位或区域服务 |
getSupportDeviceArea() |
String |
设备支持接入地区 | 区域能力服务 |
getCoapServer() |
String |
局域网配网或 CoAP 服务地址 | 网络配置服务 |
getUserId() |
String? |
当前登录用户 ID | 宿主登录态 |
getUserToken() |
String? |
当前登录用户 Token | 宿主登录态 |
getArea() |
String |
当前业务区服 | 宿主配置中心 |
getLanguage() |
String |
当前语言 | 宿主多语言配置 |
4.3 自动登录
宿主已经拿到用户登录态,并且需要在 SDK 初始化完成后直接恢复账号上下文时,调用账号模块提供的 saveData(...) 方法进行自动登录。
// 自动登录
ARouter.getInstance().navigation(IAccount::class.java)
?.saveData(
token = "",
userId = "",
account = "",
userInfoJson = ""
)
saveData(...) 方法签名如下:
fun saveData(
token: String? = "",
userId: String? = "",
account: String? = "",
userInfoJson: String? = ""
)
参数说明:
| 字段 | 类型 | 说明 |
|---|---|---|
token |
String? |
用户登录 Token |
userId |
String? |
用户唯一标识 |
account |
String? |
账号信息,填写手机号、邮箱或业务账号 |
userInfoJson |
String? |
用户扩展信息 JSON 字符串,填写宿主业务透传内容 |
调用要求:
saveData(...)在LumiCoreManager初始化完成后调用token与userId应与宿主当前登录态保持一致- 项目没有完整用户信息时,先传
token、userId、account
4.4 接入要求
- 宿主完成账号登录后,确保
SessionManager中已经具备用户 ID、Token 和区域信息 - 如果项目包含多地区、多语言切换,请确保
getArea()和getLanguage()能实时返回当前值 extensions中的地址统一由BuildConfig或配置中心维护,避免硬编码散落在业务代码中- 自动登录或恢复会话时,在统一初始化完成后串联宿主的账号模块
4.5 使用示例项目说明
OEM SDK 使用方式如下:
- 通过
LumiCoreManager完成统一初始化 - 使用
LumiCoreSDKConfig.builder()构建初始化参数 - 将
sdkChannel设置为LumiSDKChannel.CHANNEL_OEM_SDK - 通过
ILumiUserInfo将宿主登录态、地区、多语言与时间制式能力注入 SDK - 使用
extensions补充 OEM 项目的 H5 与工具页扩展地址
完成以上步骤后,宿主工程继续接入看板 OEM SDK 对应页面与业务能力。