跳到主要内容

RainMaker 推送通知有效载荷

请按照推送通知中的步骤配置并启用通知推送。

推送通知方案

安卓系统

亚马逊 SNS 服务支持 Firebase Cloud Messaging (FCM) 向安卓用户发送通知。谷歌云端推送 (Google Cloud Messaging, GCM) 是其原版,现已弃用。亚马逊 SNS 服务在 FCM 和 GCM 后台使用的都是 FCM。

自 2024 年 7 月 22 日起,谷歌不再支持通过旧版 FCM API 推送移动端通知。RainMaker 现已改用新的 FCM HTTP v1 API 格式。

注意:尽管消息格式发生了变化,但移动应用程序接收到的仍然只是安卓通知有效载荷中的 "data" 键,与之前保持一致。

RainMaker 发送的未转义有效载荷(旧格式):

{
"GCM": "{
"data": {
"title": "ESP RainMaker",
"body": "",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.<event_type>",
"timestamp": 1648563678737,
"description": "",
"event_data": {}
}
}
}"
}

RainMaker 发送的未转义有效载荷(新格式):

{
"GCM": "{
"fcmV1Message": {
"message": {
"data": {
"title": "ESP RainMaker",
"body": "",
     "event_data_payload": "{
       "event_version": "v1",
       "id": "1",
       "event_type": "rmaker.event.<event_type>",
       "timestamp": 1648563678737,
       "description": "",
       "event_data": {}
     }"
}
}
}
}"
}

手机应用接收到的未转义 JSON 事件详情格式如下:

{
"data": {
"title": "ESP RainMaker",
"body": "",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.<event_type>",
"timestamp": 1648563678737,
"description": "",
"event_data": {}
}"
}
}

手机应用仅接收 "data" 键值部分,该部分在旧版格式和 FCMv1 格式中保持一致。如有需要,可以修改通知的有效载荷内容。


iOS 系统

亚马逊 SNS 服务支持通过苹果推送通知服务 (Apple Push Notification, APNs) 向 iOS 用户发送通知。你可以使用 APNs 沙盒通道向 APNs 的沙盒环境发送推送通知信息以进行产前测试。

RainMaker 推送通知有效载荷的格式为:

{
"APNS/APNS_SANDBOX": "Escaped JSON event details with iOS supported attributes"
}

手机应用收到转义后的 JSON 事件详情的格式为:

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.<event_type>",
"timestamp": 1648563678737,
"description": "",
"event_data": {}
}
},
"mutable-content": 1
}
}

如果需要,你也可以更改通知的有效载荷。点击此处参考更多信息。

在当前 iOS 有效载荷中,除节点参数变更事件外,所有事件均已添加默认值的 sound 键,用于触发带默认声音的通知。


推送通知有效载荷

注意:以下按事件分类的有效载荷为了便于阅读,在所有层级均已进行了未转义处理。实际接收到的有效载荷是经过转义的有效 JSON 有效载荷。以下是某个事件(例如:节点警报)的实际转义有效载荷示例。

安卓iOS
{"GCM": "{\"fcmV1Message\":{\"message\":{\"data\":{\"title\":\"ESP RainMaker\",\"body\":\"Alert received from a node\",\"event_data_payload\":\"{\\\"event_version\\\":\\\"v1\\\",\\\"id\\\":\\\"1\\\",\\\"event_type\\\":\\\"rmaker.event.alert\\\",\\\"timestamp\\\":1648706009358,\\\"description\\\":\\\"Alert received from a node\\\",\\\"event_data\\\":{\\\"message_body\\\":\\\"{\\\\\\"Alert\\\\\\":\\\\\\"Sample alert\\\\\\"}\\\",\\\"node_id\\\":\\\"EPRoUZemZPDiHjKrHoD74f\\\"}}\"}}}}"}{ "APNS": "{\"aps\":{\"alert\":{\"title\":\"ESP RainMaker\",\"body\":\"Alert received from a node\",\"event_data_payload\":{\"event_version\":\"v1\",\"id\":\"1\",\"event_type\":\"rmaker.event.alert\",\"timestamp\":1648706009358,\"description\":\"Alert received from a node\",\"event_data\":{\"message_body\":\"{\\\"Alert\\\":\\\"Sample alert\\\"}\",\"node_id\":"\EPRoUZemZPDiHjKrHoD74f\"}}},\"mutable-content\":1,\"sound\":\"default\"}}"}

关于特定事件的推送通知有效载荷,请参考以下未转义有效载荷示例。


1. 已连接节点

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "Node(s) connected to cloud",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_connected",
"timestamp": 1648563678737,
"description": "Node(s) connected to cloud",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"connectivity": {
"connected": true,
"timestamp": 1648563678517
}
}
}"
}
}

iOS

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "Node(s) connected to cloud",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_connected",
"timestamp": 1648563678737,
"description": "Node(s) connected to cloud",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"connectivity": {
"connected": true,
"timestamp": 1648563678517
}
}
}
},
"mutable-content": 1,
"sound": "default"
}
}

2. 节点断开连接

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "Node(s) disconnected from cloud",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_disconnected",
"timestamp": 1648563564021,
"description": "Node(s) disconnected from cloud",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"connectivity": {
"connected": false,
"timestamp": 1648563558181
}
}
}"
}
}

iOS

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "Node(s) disconnected from cloud",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_disconnected",
"timestamp": 1648563564021,
"description": "Node(s) disconnected from cloud",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"connectivity": {
"connected": false,
"timestamp": 1648563558181
}
}
}
},
"mutable-content": 1,
"sound": "default"
}
}

3. 节点参数变更

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "Node parameters updated",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_params_changed",
"timestamp": 1648563339270,
"description": "Node parameters updated",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"payload": "{
"Lightbulb": {
"brightness": 75
}
}"
}
}"
}
}

iOS

{
"aps": {
"content-available": 1
},
"data": {
"title": "ESP RainMaker",
"body": "Node parameters updated",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_params_changed",
"timestamp": 1648563339270,
"description": "Node parameters updated",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"payload": "{
"Lightbulb": {
"brightness": 75
}
}"
}
}
}
}

4. 添加用户节点

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "New Node(s) added",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.user_node_added",
"timestamp": 1648562696803,
"description": "New Node(s) added",
"event_data": {
"user_id": "69304cb1-7572-4981-87d8-eb06681ca699",
"user_role": "primary",
"nodes": ["WXXuKyL4HBTFbBQvxfCa6j"]
}
}"
}
}

iOS

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "New Node(s) added",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.user_node_added",
"timestamp": 1648562696803,
"description": "New Node(s) added",
"event_data": {
"user_id": "69304cb1-7572-4981-87d8-eb06681ca699",
"user_role": "primary",
"nodes": ["WXXuKyL4HBTFbBQvxfCa6j"]
}
}
},
"mutable-content": 1,
"sound": "default"
}
}

5. 删除用户节点

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "Node(s) removed",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.user_node_removed",
"timestamp": 1648563123598,
"description": "Node(s) removed by primary user",
"event_data": {
"user_id": "69304cb1-7572-4981-87d8-eb06681ca699",
"user_role": "",
"nodes": ["WXXuKyL4HBTFbBQvxfCa6j"]
}
}"
}
}

iOS

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "Node(s) removed",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.user_node_removed",
"timestamp": 1648563123598,
"description": "Node(s) removed by primary user",
"event_data": {
"user_id": "69304cb1-7572-4981-87d8-eb06681ca699",
"user_role": "",
"nodes": ["WXXuKyL4HBTFbBQvxfCa6j"]
}
}
},
"mutable-content": 1,
"sound": "default"
}
}

6. 节点警报

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "Alert received from a node",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.alert",
"timestamp": 1648706009358,
"description": "Alert received from a node",
"event_data": {
"message_body": "{
"Alert": "Sample alert"
}",
"node_id": "EPRoUZemZPDiHjKrHoD74f"
}
}"
}
}

iOS

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "Alert received from a node",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.alert",
"timestamp": 1648706009358,
"description": "Alert received from a node",
"event_data": {
"message_body": "{
"Alert": "Sample alert"
}",
"node_id": "EPRoUZemZPDiHjKrHoD74f"
}
}
},
"mutable-content": 1,
"sound": "default"
}
}

7. 触发节点自动化

安卓

{
"data": {
"title": "ESP RainMaker",
"body": "Successfully triggered automation for some device(s)",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_automation_trigger",
"timestamp": 1648560446262,
"description": "Automation Triggered",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"automation_id": "a5rYFynf6XNjsNRJmarkbZ",
"automation_name": "TurnOffWhen100",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"events": [{
"params": {
"Lightbulb": {
"brightness": 100
}
},
"check": "=="
}],
"actions": [{
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"params": {
"Lightbulb": {
"power": false
}
}
}],
"status": [{
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"status": "success",
"description": "Node automation triggered"
}]
}
}"
}
}

iOS

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "Successfully triggered automation for some device(s)",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.node_automation_trigger",
"timestamp": 1648560446262,
"description": "Automation Triggered",
"event_data": {
"user_id": "1fd342a3-7531-48a0-9d97-4242a8502ed4",
"automation_id": "a5rYFynf6XNjsNRJmarkbZ",
"automation_name": "TurnOffWhen100",
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"events": [{
"params": {
"Lightbulb": {
"brightness": 100
}
},
"check": "=="
}],
"actions": [{
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"params": {
"Lightbulb": {
"power": false
}
}
}],
"status": [{
"node_id": "EPRoUZemZPDiHjKrHoD74f",
"status": "success",
"description": "Node automation triggered"
}]
}
}
},
"mutable-content": 1,
"sound": "default"
}
}

8. 节点由用户共享

场景:user1 发送节点共享请求给 user2

安卓(user2 收到共享请求)

{
"data": {
"title": "ESP RainMaker",
"body": "New node sharing request received. Please accept or decline",
"event_data_payload": "{
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.user_node_sharing_add",
"timestamp": 1648637838355,
"description": "New node sharing request received. Please accept or decline",
"event_data": {
"user_id": "69304cb1-7572-4981-87d8-eb06681ca699",
"nodes": ["WXXuKyL4HBTFbBQvxfCa6j"],
"primary_user_name": "username2@domain.com",
"request_id": "JBYejyPW3fx6uBBFnU3bsg",
"metadata": {
"devices": [{
"name": "AC Switch",
"type": "esp.device.switch"
}]
}
}
}"
}
}

iOS(用户 2 收到共享请求)

{
"aps": {
"alert": {
"title": "ESP RainMaker",
"body": "New node sharing request received. Please accept or decline",
"event_data_payload": {
"event_version": "v1",
"id": "1",
"event_type": "rmaker.event.user_node_sharing_add",
"timestamp": 1648637838355,
"description": "New node sharing request received. Please accept or decline",
"event_data": {
"user_id": "69304cb1-7572-4981-87d8-eb06681ca699",
"nodes": ["WXXuKyL4HBTFbBQvxfCa6j"],
"primary_user_name": "username2@domain.com",
"request_id": "JBYejyPW3fx6uBBFnU3bsg",
"metadata": {
"devices": [{
"name": "AC Switch",
"type": "esp.device.switch"
}]
}
}
}
},
"mutable-content": 1,
"category": "ADD_SHARING",
"sound": "default"
}
}

On this page