发送推送通知
注意
该门户网站正在开发中。文档的完整版本请看这里.
关键词:RuStore,开发者,文档,RuStoreSDK,推送通知,推送通知发送。API 旨在提供 Firebase 的 drop-in replacement 功能。
要发送推送通知,请使用 POST 方法 https://vkpns.rustore.ru/v1/projects/$project_id/messages:send
。
指定"项目 ID"和"服务令牌"来发送推送通知。您可以在 RuStore 控制台系统中获取这些值。为此,请在应用程序页面上转到"推送通知"部分并选择"项目"。
服务令牌需要在"Authorization: Bearer {service-token}
标题中指定。
请求正文
参数 | 类型 | 描述 |
---|---|---|
validate_only | bool | 在不发送推送通知的情况下进行请求验证 |
message | object (message) | 推送通知的结构体 |
message
参数 | 类型 | 描述 |
---|---|---|
token | string | 在应用程序中获得的用户推送令牌 |
data | map | 包含"key": value 对的对象value |
notification | object (message.notification) | 适用于所有平台的基本通知模板 |
android | object (message.android) | Android 消息的特殊参数 |
message.notification
参数 | 类型 | 描述 |
---|---|---|
title | string | 通知标题 |
body | string | 通知的主要文本 |
image | string | 包含将在通知中显示的图片的 URL 地址 |
message.android
参数 | 类型 | 描述 |
---|---|---|
ttl | string (duration format) | 消息在存储中保留的时间(以秒为单位)。例如:"3.5s" |
notification | object (message.android.notification) | 用于发送到 Android 设备的通知Android |
message.android.notification
参数 | 类型 | 描述 |
---|---|---|
title | string | 通知标题 |
body | string | 通知的主要文本 |
icon | string | 通知图标 |
color | string | 通知图标的颜色,格式为 #rrggbb |
image | string | 包含将在通知中显示的图片的 URL 地址 |
channel_id | string | 通知渠道的标识符 |
click_action | string | 用户点击通知时关联的动作 |
message
结构体中,目前只支持上述字段。
成功响应的正文
参数 | 类型 | 描述 |
---|---|---|
— | — | 在成功响应的情况下,将返回一个带有空 payload 的消息payload |
错误响应的正文
参数 | 类型 | 描述 |
---|---|---|
error | object (error) | 错误 |
error
参数 | 类型 | 描述 |
---|---|---|
code | int | 数字错误代码 (404, 400, 403, 401, ...) |
message | string | 错误的详细描述 |
status | string | 文本格式的错误代码(INVALID_ARGUMENT, UNREGISTERED, ...) |
TTPstatus对应于字段 code。
发送消息时可能的错误:
INVALID_ARGUMENT
- 当发送消息时,请求参数指定不正确。INTERNAL
- 服务的内部错误。TOO_MANY_REQUESTS
- 发送消息的尝试次数超过限制。PERMISSION_DENIED
- 服务密钥指定不正确。NOT_FOUND
- 用户的推送令牌指定不正确。
验证算法Message
- 如果message.data的payload不为空(内部至少有一个键值对),那么该消息是有效的。message.notification和message.android部分可以不包含。
- 如果message.data字段不存在,则必须有notification。在这种情况下,需要检查message.notification或message.android.notification字段的存在。这些字段中至少有一个必须存在,但两个都可以存在(如果两者都存在,某些字段将被重写)。
限制
- 如果推送中没有ttl字段或其值为0,则考虑默认值为4周。如果推送中缺少message.android 部分,则会添加该部分并包含ttl字段。
- 消息的最大容量为4096字节。
推送通知发送示例
关键词:RuStore,开发者,文档,RuStoreSDK,推送通知,发送推送通知,示例,无效的S2S-令牌,过期的推送令牌。成功请求的示例
POST https: //vkpns.rustore.ru/v1/projects/myproject-b5ae1/messages:send HTTP/2Content-Type: application/jsonAuthorization: Bearer \$ss_token{ \`\`\"message\" :{ \`\`\"token\" : \"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1\...\" , \`\`\"notification\" :{ \`\`\"body\" : \"This is a notification message!\" , \`\`\"title\" : \"Message\" , \`\`\"image\" : \"https://image-hosting.org/284239234.jpeg\" \`\`} \`\`}}
响应
HTTP/ 2 200{}
请求示例,包括无效的推送令牌
POST https: //vkpns.rustore.ru/v1/projects/U95076bdd5KDJ3LjYkNp91o05Y6LkfQk/messages:send HTTP/2Content-Type: application/jsonAuthorization: Bearer Fw9FgDx9FQtya6k-7UkSOnzpHYhDq0SQY4-8QKJ6wKZI9OUPiCCYyNmS-CV2-ZQ5{ \`\`\"message\" : { \`\`\"token\" : \"bad-push-token\" , \`\`\"notification\" : { \`\`\"body\" : \"This is a notification message!\" , \`\`\"title\" : \"Message\" , \`\`\"image\" : \"https://image-hosting.org/284239234.jpeg\" \`\`} \`\`}}
响应
HTTP/ 2 400{ \`\`\"error\" : { \`\`\"code\" : 400 , \`\`\"message\" : \"The registration token is not a valid FCM registration token\" , \`\`\"status\" : \"INVALID_ARGUMENT\" \`\`}}
带有已过期有效推送令牌的请求示例
POST https: //vkpns.rustore.ru/v1/projects/U95076bdd5KDJ3LjYkNp91o05Y6LkfQk/messages:send HTTP/2Content-Type: application/jsonAuthorization: Bearer Fw9FgDx9FQtya6k-7UkSOnzpHYhDq0SQY4-8QKJ6wKZI9OUPiCCYyNmS-CV2-ZQ5{ \`\`\"message\" : { \`\`\"token\" : \"eH4tgqKEfFKqH6cMJ2WLttVibgQO9hfn\" , \`\`\"notification\" : { \`\`\"body\" : \"This is a notification message!\" , \`\`\"title\" : \"Message\" , \`\`\"image\" : \"https://image-hosting.org/284239234.jpeg\" \`\`} \`\`}}
响应
HTTP/ 2 404{ \`\`\"error\" : { \`\`\"code\" : 404 , \`\`\"message\" : \"Requested entity was not found.\" , \`\`\"status\" : \"NOT_FOUND\" \`\`}}