跳到主要内容

发送推送通知

注意

该门户网站正在开发中。文档的完整版本请看这里.

关键词: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_onlybool在不发送推送通知的情况下进行请求验证
messageobject (message)推送通知的结构体

message

参数类型描述
tokenstring在应用程序中获得的用户推送令牌
datamap包含"key": value 对的对象value
notificationobject (message.notification)适用于所有平台的基本通知模板
androidobject (message.android)Android 消息的特殊参数

message.notification

参数类型描述
titlestring通知标题
bodystring通知的主要文本
imagestring包含将在通知中显示的图片的 URL 地址

message.android

参数类型描述
ttlstring (duration format)消息在存储中保留的时间(以秒为单位)。例如:"3.5s"
notificationobject (message.android.notification)用于发送到 Android 设备的通知Android

message.android.notification

参数类型描述
titlestring通知标题
bodystring通知的主要文本
iconstring通知图标
colorstring通知图标的颜色,格式为 #rrggbb
imagestring包含将在通知中显示的图片的 URL 地址
channel_idstring通知渠道的标识符
click_actionstring用户点击通知时关联的动作

message 结构体中,目前只支持上述字段。

成功响应的正文

参数类型描述
在成功响应的情况下,将返回一个带有空 payload 的消息payload

错误响应的正文

参数类型描述
errorobject (error)错误

error

参数类型描述
codeint数字错误代码 (404, 400, 403, 401, ...)
messagestring错误的详细描述
statusstring文本格式的错误代码(INVALID_ARGUMENT, UNREGISTERED, ...)

TTPstatus对应于字段 code。

发送消息时可能的错误:

  • INVALID_ARGUMENT - 当发送消息时,请求参数指定不正确。
  • INTERNAL - 服务的内部错误。
  • TOO_MANY_REQUESTS - 发送消息的尝试次数超过限制。
  • PERMISSION_DENIED - 服务密钥指定不正确。
  • NOT_FOUND - 用户的推送令牌指定不正确。

验证算法Message

  1. 如果message.data的payload不为空(内部至少有一个键值对),那么该消息是有效的。message.notification和message.android部分可以不包含。
  2. 如果message.data字段不存在,则必须有notification。在这种情况下,需要检查message.notification或message.android.notification字段的存在。这些字段中至少有一个必须存在,但两个都可以存在(如果两者都存在,某些字段将被重写)。

限制

  1. 如果推送中没有ttl字段或其值为0,则考虑默认值为4周。如果推送中缺少message.android部分,则会添加该部分并包含ttl字段。
  2. 消息的最大容量为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\"    \`\`}}