APP SDK
若开发者需要集成Aqara设备到第三方APP上实现设备配网等功能,可选择集成SDK。
目前SDK分两种:不带UI的SDK,所有前端页面需开发者自行设计开发;带UI的SDK,提供带有Aqara风格的SDK和demo,开发者也可替换为自有品牌的UI交互风格。详细SDK对接请参考SDK对接开发手册。
APP SDK一般适用于虚拟账号授权的方式,授权流程可参见授权管理-通过API获取虚拟账号授权流程页面。
不带UI的SDK
SDK仅用于网关设备配网,子设备配网通过write.device.openConnect接口实现。
具体配网流程如下:
此SDK暂没有开放下载链接,如有需求,请咨询绿米商务,谢谢。
注意:由于IOS对Homekit有强制性,即带有Homekit功能的设备使用IOS手机添加时需要以Homekit的流程进行配网。
带UI的SDK
带UI的SDK会提供Aqara风格标准化的UI交互页面,开发者可直接使用,也可根据自身APP风格更改交互UI设计。
SDK集成说明
集成流程如下:
此SDK暂没有开放下载链接,如有需求,请咨询绿米商务,谢谢。
获取UI-SDK初始化参数接口
请求参数:无
请求示例:
{
"intent": "config.app.init",
"data": {
}
}
- 响应参数:
名称 | 类型 | 描述 |
---|---|---|
userId | String | Aqara用户标识唯一id |
token | String | APP-SDK访问绿米服务的token |
appRequestDomain | String | APP-SDK请求的服务域名地址 |
expiresIn | Int | token过期时间,单位秒 |
positionId | String | 默认位置 |
baseH5Url | String | sdk请求的h5链接 |
baseImageUrl | String | sdk请求的图片cdn地址 |
appId | String | sdk初始化参数 |
appKey | String | sdk初始化参数 |
- 响应示例:
{
"code": 0,
"requestId": "",
"message": "Success",
"msgDetails": null,
"result": {
"expiresIn":2592000,
"baseImageUrl":"https://xxxxx.aqara.com",
"appRequestDomain":"xxxx.aqara.cn",
"appKey":"axasdasxasdsadasxxxxx",
"baseH5Url":"https://xxxxx.aqara.com/index.html",
"userId":"U0211163631238521600",
"token":"open9ee4f2c01234504b540ac8f0458de6807cd5",
"appId":"2070959b27312310327168c4"
}
}
通知token过期接口
- 请求参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | String | 是 | APP-SDK访问Aqara服务的token |
- 请求示例:
{
"intent": "config.app.tokenExpire",
"data": {
"token": "xxx"
}
}
响应参数:无
响应示例:
{
"code": 0,
"requestId": "",
"message": "Success",
"msgDetails": null
}
消息推送
为了提高UI-APP-SDK集成的体验效果,建议支持推送通道,方便Aqara系统把客户关注的数据,实时推送到第三方APP。
流程如下:
请求说明
请求URL:在Aqara开发者平台-控制台-应用管理-消息推送页面配置的消息接收地址,如:https://xx.xx.com/aqara/app/message
请求方式:HTTP POST (application/json)
请求head参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
time | String | 是 | 请求时间 |
nonce | String | 是 | 请求随机数保障请求唯一性 |
appkey | String | 否 | 请求签名key,如果配置开启签名时返回 |
sign | String | 否 | 请求签名,如果配置开启签名时返回 |
Sign签名规则:
- header参数按照token、appkey、nonce、time字段顺序进行排序,并使用
&
符号拼接,拼接格式为appkey=xxx&nonce=xxx&time=xxx; - 对第一步产生的字符串末尾拼接appSecret;
- 对第二步产生的字符串,全部小写处理;
- 对第三步产生的字符串MD5 32位加密后,生成的数即为Sign的值。
注意:默认不开启签名,如开启签名需要Aqara开发者在平台进行相关的配置,完善 appKey(签名Key) 和 appSecret(签名秘钥)。
-------------------------------------- 第一步:拼接header参数 --------------------------------
appkey=532cad73c5493193d63d367016b98b27&Nonce=C6wuzd0Qguxzelhb&Time=1618914078668
-------------------------------------- 第二步:拼接appKey参数 --------------------------------appkey=532cad73c5493193d63d367016b98b27&Nonce=C6wuzd0Qguxzelhb&Time=1618914078668gU7Qtxi4dWnYAdmudyxni52bWZ58b8uN
-------------------------------------- 第三步:字符串小写 ------------------------------------- appkey=532cad73c5493193d63d367016b98b27&nonce=c6wuzd0qguxzelhb&time=1618914078668gu7qtxi4dwnyadmudyxni52bwz58b8un
-------------------------------------- 第三步:MD5 32位加密 ----------------------------------
0e27da9f4c88c27896d1393a64d70392
请求Body参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | String | 是 | 终端推送id 对应推送第三方生成给app-sdk的clientId,多个时用英文逗号分割 |
data | String | 是 | 具体推送到app-sdk的数据 |
- 请求示例
{
"token":"xxx,xxx",
"data":"xxxx"
}
- 请求响应格式
{
"code":0
}
注意:当第三方系统收到推送的HTTP消息时,请按以上示例返回,若返回格式不符合要求,Aqara系统会认为第三方接收消息系统服务异常,将在一定条件下停止对第三方系统进行消息推送。