版本记录:
修订日期 | 版本号 | 修改人 | 描述 |
---|---|---|---|
2020-05-18 | V1.0 | 杨昭炎 | 文档在线发布 |
版权声明:
©2020爱为物联保留所有权利。未经爱为物联书面授权,严禁将本文档的全部或部分内容用于印刷或制作电子文档。
本文档中包含的信息仅供爱为物联人员、设备的授权用户以及获得爱为物联授权的人员使用,严禁用于其他用途。本文档信息如有更改,恕不另行通知。
商标声明:
Ivyiot™和爱为物联标志是爱为物联的注册商标和服务标志。其他产品、品牌或服务名称是其各自所有者的商标或服务标志。未经爱为物联书面许可,严禁复制、展示或使用其商标或服务标志。
参考文件:
爱为物联不负责提供本文档中随设备引用的所有文档。爱为物联保留决定随产品和服务提供哪些文档的权利。
1. 简介
1.1 文档介绍
本文档介绍了Ivy消息推送对接流程及详细接口对接明细,以便商户集成对接,从而实现客户消息推送服务。
1.2 适用人群
本文档专为需要接入IVY平台的产品、开发、测试等相关人员编写。
2. 流程说明
2.1 前置条件
A. 客户若存在账号系统,请先完成以下流程对接:
- 基于《【账号授权】IVY单点登陆API》对接影子账号获取AccessToken和RefreshToken。
- 使用AccessToken基于《【通用API】IVY云存储API》对接设备管理相关API。
B. 客户不存在账号系统,请先完成以下流程对接:
- 基于《【账号授权】IVY账号授权接口》对接爱为账号系统获取AccessToken和RefreshToken。
- 使用AccessToken基于《【通用API】IVY云存储API》对接设备管理相关API。
2.2 对接流程
2.2.1 消息推送到APP
流程详解:
- APP调用云端接口获取推送Url和Tag,将其写入IPC配置。
- APP验证APNS或FCM可达性,调用云端登陆接口。
- 设备推送消息到云端,云端根据当前用户登陆的终端列表,推送消息。
- 若用户在终端设备中登出账号,则需要调用IVY云端的登出接口,后续不再收到消息推送。
2.2.2 消息推送到云
流程详解:
- APP调用云端接口获取推送Url和Tag,将其写入IPC配置。
- 客户开发接受IVY消息接口,给到爱为对接。
- 设备推送消息到云端,云端根据客户给到的接口下发消息给客户云。客户自行实现消息推送或手机短信等业务。
消息返回示例
{
"msg_type": 1, //消息类型
"title": "One Key to Call", //消息标题
"description": "F10:F10 detected One Key to Call at 00:00!", //消息描述内容
"mac": "44B295A2862C", //设备mac地址
"msgId": 2197686294, //消息ID,唯一
"msgTime": 1556435279//设备消息推送时间
"saveTime": 1556435279 //服务器消息保存时间
}
消息内容
参数名 | 说明 |
---|---|
msg_type | 消息类型 |
title | 消息标题 |
description | 消息描述内容 |
mac | 设备mac地址 |
msgId | 消息ID,唯一 |
msgTime | 设备消息推送时间 |
saveTime | 服务器消息保存时间 |
消息类型msg_type
类型 | 说明 |
---|---|
0 | 系统消息 |
1 | 移动侦测 |
2 | 声音侦测 |
3 | 温度侦测 |
4 | 湿度侦测 |
7 | 人体侦测 |
3 接口实现
3.1 IVY接口
HOST_BIZ、HOST_PUSHFEP、signKey请联系爱为相关人员获取
3.1.1 基础子服务信息查询
接口描述:
- 查询用户子服务信息,对于一个用户所返回的数据是固定的,用户只要查询一次即可
请求URL:
- https://{HOST_BIZ}/gateway?service=center.getServerInfo
请求方式:
- GET
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
clientId | String | 必选 | appKey | 40 |
openId | String | 必选 | openId(用户标志) | 40 |
accessToken | String | 必选 | accessToken | 40 |
oemCode | String | 必选 | oem厂商信息 | 20 |
返回示例:
{
"errorCode":"",
"data":{
"userId":111111,
"subtoken":"subtoken",
"area":"NA",
"tag":"tag",
"storeTag":"storeTag",
"alexaTag":"alexaTag",
"sendMsgUrl":"sendMsgUrl",
"sendMsgUrlSecure":"sendMsgUrlSecure",
"url":"url",
"storeUrl":"storeUrl",
"alexaUrl":"alexaUrl",
"channelCount":0
}
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
data | 返回json对象 |
data.userId | 用户id |
data.subtoken | 用户token |
data.url | 推送业务查询服务地址 |
data.sendMsgUrl | 推送接收消息服务http地址 |
data.sendMsgUrlSecure | 推送接收消息服务https地址 |
data.storeUrl | 云存储接入服务地址 |
data.alexaUrl | Alexa基础服务接入地址 |
data.tag | 用户推送tag |
data.storeTag | 用户云存储tag |
data.alexaTag | 用户Alexa tag |
data.area | 用户所属区域 |
错误码说明:
基础返回码 | 说明 |
---|---|
FC_SERVICE_NOT_IMPLEMENT(009999) | 该api不存在或者未实现 |
FC_INVALID_PARAMETER(000006) | 请求参数错误 |
FC_SYSTEM_ERROR(000099) | 系统错误 |
业务返回码 | 说明 |
FC_SYSTEM_ADDRESS_CHANGE(000077) | 表示调度中心的地址已变更,将会返回新的服务地址,字段为server_url |
FC_SYSTEM_UPGRADE(000066) | 表示系统升级中,定期轮询(5分钟一次) |
3.1.2 APNS登陆
接口描述:
- APNS登陆
请求URL:
- https://{HOST_PUSHFEP}/apns_login
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
userTag | String | 必选 | 用户推送Tag | 32 |
appToken | String | 必选 | 手机DeviceToken | 64 |
sign | String | 必选 | 验签,计算方法为md5(signKey+userTag+appToken)。 | 32 |
返回示例:
{
"errorCode": "",
"failureDetails": "ok"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.3 FCM登陆
接口描述:
- FCM登陆
请求URL:
- https://{HOST_PUSHFEP}/FCM_login
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
userTag | String | 必选 | 用户推送Tag | 32 |
appToken | String | 必选 | 手机DeviceToken | 64 |
sign | String | 必选 | 验签,计算方法为md5(signKey+userTag+appToken)。 | 32 |
返回示例:
{
"errorCode": "",
"failureDetails": "ok"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.4 极光登陆
接口描述:
- FCM登陆
请求URL:
- https://{HOST_PUSHFEP}/jpush_login
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
userTag | String | 必选 | 用户推送Tag | 32 |
appToken | String | 必选 | 手机DeviceToken | 64 |
sign | String | 必选 | 验签,计算方法为md5(signKey+userTag+appToken)。 | 32 |
返回示例:
{
"errorCode": "",
"failureDetails": "ok"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.5 APNS登出
接口描述:
- APNS登出
请求URL:
- https://{HOST_PUSHFEP}/apns_logout
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
userTag | String | 必选 | 用户推送Tag | 32 |
appToken | String | 必选 | 手机DeviceToken | 64 |
sign | String | 必选 | 验签,计算方法为md5(signKey+userTag+appToken)。 | 32 |
返回示例:
{
"errorCode": "",
"failureDetails": "ok"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.6 FCM登出
接口描述:
- FCM登出
请求URL:
- https://{HOST_PUSHFEP}/FCM_logout
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
userTag | String | 必选 | 用户推送Tag | 32 |
appToken | String | 必选 | 手机DeviceToken | 64 |
sign | String | 必选 | 验签,计算方法为md5(signKey+userTag+appToken)。 | 32 |
返回示例:
{
"errorCode": "",
"failureDetails": "ok"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.7 极光登出
接口描述:
- APNS登出
请求URL:
- https://{HOST_PUSHFEP}/jpush_logout
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 | 长度 |
---|---|---|---|---|
userTag | String | 必选 | 用户推送Tag | 32 |
appToken | String | 必选 | 手机DeviceToken | 64 |
sign | String | 必选 | 验签,计算方法为md5(signKey+userTag+appToken)。 | 32 |
返回示例:
{
"errorCode": "",
"failureDetails": "ok"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.8 查询所有设备的最近报警消息
接口描述:
- 查询所有设备的最近的一组报警消息
请求URL:
- https://{HOST_PUSH}/push-msg/queryDevicesLatest
请求方式:
- GET
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 |
---|---|---|---|
tag | String | 必选 | 用户推送Tag |
返回示例:
{
"errorCode": "",
"data": {
"minMsgNum": 100,
"msgList": []
}
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.9 查询设备报警推送开关
接口描述:
- 查询设备报警推送开关
请求URL:
- https://{HOST_PUSH}/push/subscribe_status
请求方式:
- GET
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 |
---|---|---|---|
tag | String | 必选 | 用户推送Tag |
ipcMac | String | 必选 | 设备mac地址 |
返回示例:
{
"errorCode": "",
"data": [
{
"ipcMac": "A0ECA78ED37C",
"tag": "02c7b864bd744c7e96a79fac457a371c",
"subscribed": true
}
]
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.10 打开设备报警推送开关
接口描述:
- 打开设备报警推送开关, app可收到来自设备的报警信息
请求URL:
- https://{HOST_PUSH}/push/open
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 |
---|---|---|---|
tag | String | 必选 | 用户推送Tag |
ipcMac | String | 必选 | 设备mac地址 |
oemCode | String | 必选 | 设备oemCode |
返回示例:
{
"errorCode": ""
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.1.11 关闭设备报警推送开关
接口描述:
- 关闭设备报警推送开关,App将无法收到来自设备的报警
请求URL:
- https://{HOST_PUSH}/push/close
请求方式:
- POST
请求头:
- 无
请求参数:
参数名 | 数据类型 | 是否必须 | 说明 |
---|---|---|---|
tag | String | 必选 | 用户推送Tag |
ipcMac | String | 必选 | 设备mac地址 |
返回示例:
{
"errorCode": ""
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误码,成功时为空值 |
failureDetails | 失败原因 |
3.2 客户接口
3.2.1 接收推送信息接口
接口描述:
- 消息推送服务器方式接入必须实现此接口
- IVY服务使用此 API来推送消息到商户服务器。
- 发起者: IVY服务
- 接受者: 商户服务端
请求URL:
- 自定义(但需要给到我司,参考:/notify/receiveMsg)
请求方式:
- POST
请求头:
名称 | 是否必须 | 类型 | 说明 |
---|---|---|---|
Content-Type | 是 | String | 请求类型: application/json |
请求Body:【详细参照2.2.2 消息推送到云返回示例】
{
"msg_type":1,
"title":"One Key to Call",
"description":"F10:F10 detected One Key to Call at 00:00!",
"mac":"44B295A2862C",
"msgId":2197686294,
"msgTime":1556435279,
"saveTime":1556435279
}
响应状态码:
- 200 请求成功
- 401 请求失败
返回示例:
正确时返回:
Response Code: 200
Response Body:
{
"errorCode":"",
"failureDetails":""
}
失败时返回:
Response Code: 401
Response Body:
{
"failureDetails":"token is invalid",
"errorCode":"xxxxxx"
}
返回参数说明:
参数名 | 说明 |
---|---|
errorCode | 错误类型,见返回码 |
failureDetails | 错误描述 |
错误码说明:
- 无