环境搭建

一、概述

本文主要介绍在集成绿米SDK前,需要在您的项目中添加的一些配置,以及获取SDK初始化必要的参数

二、前提条件

  1. 确保您已经完成准备工作
  2. 确保您已经安装了Android Studio并配置了JDK、Android SDK等开发环境,详情介绍请前往Android 开发者官网

三、添加依赖

3.1 编译环境需求

支持版本

参数 版本号 描述
minSdkVersion 21 Android 5
targetSdkVersion 33 Android 13

3.2 打开Android Studio

3.3 编辑根目录下的build.gradle

注意:maven仓库的访问需要账户、密码,需要联系商务获取

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        //绿米maven仓库
        maven {
            url 'https://public-maven.aqara.com/repository/lumi-release/'
            credentials {
                username = 'maven_username'
                password = 'maven_password'
            }
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.3"
        //绿米Android初始化插件
        classpath 'com.lumi.plugin:module-init:2.0.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }
        maven {
            url 'https://public-maven.aqara.com/repository/lumi-release/'
            credentials {
                username = 'maven_username'
                password = 'maven_password'
            }
        }
    }
}

3.4 编辑app目录下的build.gradle

plugins {
    id 'com.android.application'
}
//绿米统一初始化插件
apply plugin: 'lumi-module-init'

android {

}

dependencies {
    //绿米统一初始化依赖,注意使用最新版本
    implementation 'com.lumi.external:core:2.1.9'
}

3.5 AndroidX 支持

gradle.properties中添加对AndroidX的支持

android.useAndroidX=true
android.enableJetifier=true

3.6 权限声明

四、初始化

4.1 获取SDK初始化必要的参数

4.1.1 AppId、AppKey获取

参见文档准备工作

4.1.2 其他必要参数获取

根据不同的账户授权方式,获取方式也不一致,详情请参考授权管理

通常来讲,大部份时候都是使用虚拟账户授权模式,即第三方App需要请求自身云平台获取相关的参数:

4.2 SDK初始化

集成绿米Android端各个业务SDK,通常情况下仅需通过LumiCoreManager进行统一初始化即可,其他业务SDK通常情况下不需要单独进行初始化。

4.2.1 进行统一初始化

初始化接口调用

final LumiCoreManager.LumiCoreSDKConfig config =
        new LumiCoreManager.LumiCoreSDKConfig.Companion.Builder()
                .baseUrl("host")
                .baseH5Url("h5Url")
                .baseImageUrl("imageUrl")
                .appId("appId")
                .appKey("appKey")
                .clientId("clientId")
                .sdkChannel("sdkChannel")
                .userInfo(new ILumiUserInfo() {
                    @Nullable
                    @Override
                    public String getUserId() {
                        return "userId";
                    }

                    @Nullable
                    @Override
                    public String getUserToken() {
                        return "userToken";
                    }

                    @NonNull
                    @Override
                    public String getArea() {
                        return "area";
                    }

                    @NonNull
                    @Override
                    public String getLanguage() {
                        return "language";
                    }

                    @NonNull
                    @Override
                    public String getSupportDeviceArea() {
                        return "supportDeviceArea";
                    }
                })
                .build();

//true表示打开调试日志,false反之
//注意:init方法调用多次无效,如果需要在后续更新参数,请调用update方法
LumiCoreManager.Companion.getInstance().init(this, true, config);

参数说明

字段 数据类型 说明 获取渠道
appId String App唯一标识 Aqara开发者平台
appKey String App唯一标识 Aqara开发者平台
clientId String App推送唯一标识 接口获取,详情请查看Aqara开发者平台
baseUrl String SDK请求的域名 接口获取,详情请查看Aqara开发者平台
baseH5Url String SDK请求的H5链接 接口获取,详情请查看Aqara开发者平台
baseImageUrl String SDK请求的图片cdn地址 接口获取,详情请查看Aqara开发者平台
sdkChannel String 渠道标识 项目标识,影响部分业务逻辑处理,填写项目名称即可
userId String 用户唯一标识 接口获取,详情请查看Aqara开发者平台
userToken String 用户访问令牌 接口获取,详情请查看Aqara开发者平台
area String App 所在地区 默认值为CN
language String App 当前语言 默认值为zh
supportDeviceArea String 设备入网的地区 默认值CHN

注意:area和supportDeviceArea,部分地区代号存在差异

language取值

language参数会影响SDK及云端返回到多语言类型

取值 描述 说明
zh 简体中文 默认值
zh_TW 台湾繁体 /
zh_HK 香港繁体 /
en 英文 /
ko 韩文 /
ru 俄文 /
de 德文 /
it 意大利文 /
fr 法文 /
es 西班牙文 /

注意:该值仅影响动态化获取信息的多语言,例如云端接口、配置文件等,SDK本身使用到的多语言(存放在strings.xml中)则跟随宿主App的多语言。

area取值

area参数会影响云端接口的业务逻辑,在某些地区下可能存在部分业务不可用。

取值 描述 说明
CN 中国大陆 默认值
HMT 中国香港、澳门、台湾 /
US 美国 /
EU 欧洲 /
RU 俄罗斯 /
SEA 东南亚 /
KR 韩国 /
JP 日本 /
AU 意大利 /
ME 中东 /
AF 非洲 /
OTHER 其他地区 /

supportDeviceArea取值

supportDeviceArea参数会影响设备入网配置。(部分设备仅能在特定地区进行激活使用)

取值 描述 说明
CHN 中国大陆 默认值
HMT 中国香港、澳门、台湾 /
USA 美国 /
EU 欧洲 /
RUS 俄罗斯 /
SEA 东南亚 /
KR 韩国 /
JP 日本 /
AU 意大利 /
ME 中东 /
AF 非洲 /
OTHER 其他地区 /

4.2.2 更新用户信息

如果需要切换用户,或者Token失效了,需要重新请求接口获取,详情请查看Aqara开发者平台,并且更新SDK的用户信息

更新用户信息接口调用

 LumiCoreManager.Companion.getInstance()
                .updateUserConfig(new ILumiUserInfo() {
                    @Nullable
                    @Override
                    public String getUserId() {
                        return "userId";
                    }

                    @Nullable
                    @Override
                    public String getUserToken() {
                        return "userToken";
                    }

                    @NonNull
                    @Override
                    public String getArea() {
                        return "area";
                    }

                    @NonNull
                    @Override
                    public String getLanguage() {
                        return "lang";
                    }

                    @NonNull
                    @Override
                    public String getSupportDeviceArea() {
                        return "area";
                    }
                });

五、推送

SDK本身不具备获取云端推送的能力,需要依赖宿主App的推送。详情请查看消息推送

5.1 订阅推送

LumiCoreManager.getInstance().rePushClientId("clientId")

参数说明

字段 数据类型 说明 获取渠道 示例
clientId String App推送唯一标识 接口获取,详情请查看Aqara开发者平台 HOST+随机字符串(64位以内,建议HOST拼接SDK初始化获取的token来使用)

5.2 转发推送

第三方App收到关于Aqara设备的推送时,可以将其转发给SDK

LumiCorePushManager.getInstance().onMessage("content")

注意不要将一整个消息体透传给SDK,SDK仅需要LUMI@开头的字符串

参数说明

字段 数据类型 说明 获取渠道
content String 推送消息 App自身获取

5.3 推送消息格式

content传递给SDK即可

{
  "sequenceNo": "202106031107",
  "osType": "android",
  "content": "LUMI@eyJ0eXBlIjoicmVzX3N1YnNjcmliZSIsInJlc3VsdCI6eyJ0aW1lU3RhbXAiOjE2MjMwNjUwNjA5NzYsImF0dHJDaGFubmVsIjoxLCJzb3VyY2UiOiI0LCwxNjIzMDY1MDYwNzgxLDlmMzgyMTIwNjczMTI0ZDI5N2VmNjI0MV9lOTE3ZjE0MDBhNTIyNDk1LjU0NTU4MTgyNTk4MDg5MTEzNywsIiwiYXR0ciI6IjE0LjcuODUiLCJ2YWx1ZSI6IjEyOTE4MTExNTIiLCJzdWJqZWN0SWQiOiJsdW1pMS41NGVmNDRjOTExNjUiLCJpZGVudGlmeUlkIjoiSE9TVDA0YTZkYzAzNzMyNTM3NTBiMzIyMzMxOGVhMGQ1ZmVhMjk0YSIsInB1c2hUeXBlIjoicmVzX3N1YnNjcmliZSJ9LCJjb2RlIjowfQ==",
  "token": "04a6dc0373253750b3223318ea0d5fea294a"
}
Copyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2024-06-05 16:27:09

results matching ""

    No results matching ""