跳轉至

单次推送

先決條件

要與單一推送 API 同步,請確保發出授權令牌(API KEY)。如果您已經擁有該密鑰,請要求額外的權限。請參考 Hive 伺服器 API > 通知 > 推送 v4 > 認證 以檢查如何請求和發出授權令牌。

Note

單一 Puch API 是非同步的,並按順序處理,API 請求 > 令牌查找 > 發送

  • API 請求:驗證請求數據並返回請求的響應代碼。
  • Token 查詢:查詢請求數據的推送令牌。可能會出現沒有令牌的情況。
  • 發送:將數據傳輸到各市場的推送伺服器(例如 ADM、APNS、FCM)。從市場收到的響應顯示處理結果。
  • 當在令牌查詢和發送步驟中處理失敗時,不會將響應傳輸給調用推送伺服器的客戶端。 如果您在發送數據後 10 分鐘內未收到推送,請聯繫 解決方案架構師團隊,Com2uS 平台

依環境訪問 URL

伺服器 URL
生產環境 https://notification.withhive.com
沙盒環境 https://sandbox-notification.withhive.com

基本信息和请求参数

方法 POST
網址 /push/send
區段 欄位名稱 描述 類型 必填
標頭 Content-Type application/json;charset=utf-8
Authorization bearer {{API KEY}}
主體 notice 是否設置為通知警報(默認:false

    true

  • 作為通知警報發送
  • 根據收件人的同意發送

  • false

  • 作為遊戲警報發送
  • 不論收件人的同意發送

  • 同意項目包括通知警報和夜間警報
  • 如果收件人不同意通知警報,所有設置為通知的警報將不會發送
  • 夜間警報的同意僅在給予通知警報同意的情況下適用,因此如果未同意,所有設置為通知的通知警報在夜間將不會發送。夜間定義為晚上9點到第二天早上8點。
布林值 O
identifiers 識別符信息(最多100個)識別符結構示例可以在下面找到 identifier[] O
game gameid 遊戲ID 字串 O
appids AppID 列表
如果映射到标识符的 AppID 无效,则不会发送

建议

  • 对于基于设备的标识符 (did):添加映射的 AppID
  • 对于基于账户的标识符 (playerId):添加所有映射的 AppIDs
  • 如果存在多个标识符:检查 标识符 结构中的优先级
String[] X
enableLocale 是否应用语言区域

    true

  • 以推送接收者设置的相同语言发送消息。基于与令牌信息一起保存的语言代码
  • 保存令牌时确定语言的标准
  • 第1优先:游戏语言
  • 第2优先:设备语言(如果未提供游戏语言)

  • false

  • 忽略语言区域,仅通过有效负载中的单一值发送
Boolean O
payload single 如果 enableLocale=false,请求单个字段。 消息结构 如下。 Message O
defaultLanguage 如果 enableLocale=true,设置为默认语言 String
locale {{LANGUAGE}} 如果 enableLocale=true,通过区域字段设置。与单个字段中的消息信息相同 Message
option 选项信息 如下 Option X
actionInfo android ActionPayload 信息 如下 ActionPayload X
ios ActionPayload 信息 如下 ActionPayload X
Note
  • 為了順利接收單次推送,建議在 appids 和 identifiers 欄位中僅輸入一個數據項目。
  • 如果請求中包含多個 identifiers 或 appids,可能會導致推送交付延遲,因為無法指定搜索條件。
  • 建議指定優先級最高的標識符值,並避免僅配置 did 值的標識符。
  • 避免在遊戲欄位中僅指定 gameid 的請求。
  • 如果 appids 欄位中沒有數據,則會搜索所有包含在 gameid 中的 appids,這可能會導致推送交付延遲。

識別符結構

區段 欄位名稱 描述 類型 必填
identifier identifier 至少必須包含兩者之一
優先順序:playerId,然後是did
長整數 O
playerId
did

標識範例

    [
        {
            "playerId":51234,
            "did":1234
        }
    ]

訊息結構

區段 欄位名稱 描述 類型 必需
訊息 android title 標題 字串 O
message 內容 字串 O
messageExpanded 擴展內容 字串 O
imageUrl 圖片 URL 字串 X
ticker 提示 字串 X
summaryText 摘要 字串 X
ios title 標題 字串 O
message 內容 字串 O
mediaUrl 圖片 URL 字串 X

選項資訊

部分 字段名称 描述 类型 必需
选项 徽章 接收推送时在应用图标上显示的数字(默认:1) 整数 X
覆盖 是否使用 Android 推送覆盖功能(默认:false) 布尔值 X
collapseKey 使用推送覆盖时的键值(数字字符串:“123”) 字符串 X
参与度 用户参与度 字符串 X
评论 评论 字符串 X
组键 用于在 iOS 和 Android 设备上分组通知的组键。有关更多详细信息,请参见下面的文档。 字符串 X
android 图标 当推送通知出现在用户设备上时显示的图标图像文件名。图像文件必须存在于/src/main/res/drawable中。有关支持的图像文件格式,请参见这里。 要从网络显示图像,请在此字段中输入图像 URL,而不是文件名。如果此字段为空,将显示应用图标图像。 字符串 X
声音 当推送通知出现在用户设备上时播放的声音文件名称。声音文件必须存在于/src/main/res/raw中。如果此字段为空,则使用系统默认声音。 字符串 X
优先级 发送到 Android 设备的消息优先级。这根据 FCM 控制交付时机。可以是 NORMAL 或 HIGH,默认是 NORMAL。有关更多详细信息,请参见Firebase 指南
  • NORMAL = 数据消息的默认优先级。通常在设备不处于待机模式时立即交付。如果设备处于睡眠状态,可能会延迟以节省电池。用于时间不关键的消息。
  • HIGH = FCM 尝试立即交付,可能会唤醒设备以退出待机模式。用于需要用户交互的消息。
枚举(NORMAL, HIGH) X
ios 声音 当推送通知出现在用户设备上时播放的声音文件名称。声音文件必须存在于应用容器的Library/Sounds或主包中。如果为空,则使用“默认”,并播放系统默认声音 字符串 X

ActionPayload

ActionPayload 是在使用推送操作按钮时传递的数据格式,这是单一推送 API 的一个附加功能。

推送操作按鈕是一個在SDK中可用的通知功能,當長按推送通知時顯示為系統按鈕。

有關推送操作按鈕的更多詳細資訊,請參閱以下指南。

Warning

使用推送操作按鈕時,請注意以下事項:

  • 只適用於 SDK Android 和 iOS 4.25.5.0 或更高版本。
  • identifiers 欄位中僅有效一個 identifier,並且 playerId 是必需的。
  • 開發者負責由推送操作按鈕調用的 URL 的安全性驗證。

ActionPayload 數據結構

當請求單一推送 API 時,ActionPayload 中包含的數據如下。

欄位名稱 描述 類型 必需
category 推送操作按鈕集的類別識別符,用於識別該集合。Hive SDK 提供了默認的推送操作按鈕集。 查看默認推送操作按鈕集
有關類別的更多詳細信息,請參見 Apple 開發者網站
iOS: 必需Android: 可選且被忽略
字串 O iOS
X Android
actions 在推送通知中顯示的系統按鈕列表
(Android: 最多 3 個 / iOS: 取決於推送操作按鈕集)
參見下方的 操作信息
Action[] O

行動

操作是 ActionPayload 中每个系统按钮的数据。Action 中包含的参数如下。

欄位名稱 描述 類型 必填
actionId 推播動作按鈕集的動作識別碼,用於識別推播通知中的系統按鈕。
詳細資訊請參見Apple 開發者指南
iOS: 必填Android: 選填且被忽略
字串 O iOS
X Android
titles 按鈕多語言文本,根據enableLocale參數應用。如果找不到有效的語言代碼,則使用default
key = 語言代碼,default鍵是必填的,值 = 按鈕名稱
如果按鈕名稱過長,可能會被截斷。請設置適當的長度。
僅限 Android
Map O Android
X iOS
actionType 動作類型(CURLCLOSE)預設:CLOSE
CURL執行帶有action欄位值的 URL 呼叫。
CLOSE關閉推播。
enum(CURL, CLOSE) O
action 根據動作類型執行的動作
例如:https://....
如果actionTypeCURL,則為必填項。
字串 X

輸出 > 回應參數結構

部分 欄位名稱 描述
標頭 內容類型 application/json;charset=utf-8
UUID {{UUID}}
主體 - 成功時為空

回應狀態碼

描述
200 成功 (主體為空)
400 錯誤請求 缺少 POST 數據,JSON 格式錯誤,缺少或無效的必要元素
401 未授權 授權標頭缺失或無效,API KEY 未註冊,無法訪問此 API
403 禁止 授權標頭方案不是 "Bearer"(僅支持 Bearer)
404 找不到 請求 URL 不正確
500 內部伺服器錯誤 內部伺服器錯誤
502 錯誤網關 推送網關伺服器過載,網絡嘗試了錯誤的連接
503 服務不可用 API 伺服器或身份驗證伺服器已關閉

範例代碼

  • 請求 ("enableLocale":false)

      POST /push/send HTTP/1.1
        Host: sandbox-notification.qpyou.cn
        Content-Type: application/json
        Authorization: Bearer {API KEY}
        Content-Length: [自動計算]
    
      {
          "notice": false,
          "identifiers": [
              {
                  "playerId": 200001358,
                  "did": 300010915
              }
          ],
          "game": {
              "gameid": "com.com2us.hivesdk",
              "appids": [
                  "com.com2us.hivesdk.normal.freefull.google.global.android.common",
                  "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal"
              ]
          },
          "enableLocale": false,
          "payload": {
              "single": {
                  "android": {
                      "title": "android title",
                      "message": "android message",
                      "messageExpanded": "",
                      "imageUrl": "",
                      "ticker": "",
                      "summaryText": ""
                  },
                  "ios": {
                      "title": "ios title",
                      "message": "ios message",
                      "mediaUrl": ""
                  }
              },
              "option": {
                  "badge": "1",
                  "overwrite": false,
                  "collapseKey": "",
                  "engagement": "",
                  "groupKey": "",
                  "android": {
                      "icon": "",
                      "sound": "",
                      "priority": "normal"
                  },
                  "ios": {
                      "sound": ""
                  }
              }
          },
          "actionInfo": {
              "android": {
                  "actions": [
                      {
                          "titles": {
                              "default": "確定"
                          },
                          "actionType": "CURL",
                          "action": "https://examplecurl.com"
                      },
                      {
                          "titles": {
                              "default": "取消"
                          },
                          "actionType": "CLOSE",
                          "action": ""
                      }
                  ]
              },
              "ios": {
                  "category": "CONFIRM_CATEGORY",
                  "actions": [
                      {
                          "actionId": "CONFIRM_ID",
                          "actionType": "CURL",
                          "action": "https://examplecurl.com"
                      },
                      {
                          "actionId": "CLOSE_ID",
                          "actionType": "CLOSE",
                          "action": ""
                      }
                  ]
              }
          }
      }
    

  • 請求 ("enableLocale":true)

    POST /push/send HTTP/1.1
    Host: sandbox-notification.qpyou.cn
    Content-Type: application/json
    Authorization: Bearer {API KEY}
    Content-Length: [auto calculated]
    
    {
        "notice": false,
        "identifiers": [
            {
                "playerId": 200001358,
                "did": 300010915
            }
        ],
        "game": {
            "gameid": "com.com2us.hivesdk",
            "appids": [
                "com.com2us.hivesdk.normal.freefull.google.global.android.common",
                "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal"
            ]
        },
        "enableLocale": true,
        "payload": {
            "defaultLanguage": "en",
            "locale": {
                "ko": {
                    "android": {
                        "title": "테스트_한국어 제목",
                        "message": "테스트_한국어 메세지"
                    },
                    "ios": {
                        "title": "테스트_한국어 제목",
                        "message": "테스트_한국어 메세지"
                    }
                },
                "en": {
                    "android": {
                        "title": "test_English title",
                        "message": "test_English message"
                    },
                    "ios": {
                        "title": "test_English title",
                        "message": "test_English message"
                    }
                }
            },
            "option": {
                "badge": 1,
                "overwrite": true,
                "collapseKey": "99",
                "groupKey": "",
                "android": {
                    "icon": "GoogleIcon",
                    "sound": "GoogleSound",
                    "priority": "normal"
                },
                "ios": {
                    "sound": "AppleSound"
                }
            }
        },
        "actionInfo": {
            "android": {
                "actions": [
                    {
                        "titles": {
                            "default": "OK",
                            "en": "OK",
                            "ko": "확인"
                        },
                        "actionType": "CURL",
                        "action": "https://examplecurl.com"
                    },
                    {
                        "titles": {
                            "default": "Cancel",
                            "en": "Cancel",
                            "ko": "취소"
                        },
                        "actionType": "CLOSE",
                        "action": ""
                    }
                ]
            },
            "ios": {
                "category": "CONFIRM_CATEGORY",
                "actions": [
                    {
                        "actionId": "CONFIRM_ID",
                        "actionType": "CURL",
                        "action": "https://examplecurl.com"
                    },
                    {
                        "actionId": "CLOSE_ID",
                        "actionType": "CLOSE",
                        "action": ""
                    }
                ]
            }
        }
    }
    

Note

建議將請求數據以單行發送,無需換行,以便立即檢查伺服器日誌。

  • 回應
    HTTP/1.1 200 OK
    Content-length: 0
    Content-Type: application/json
    UUID: 3bc6b414-e2df-40d6-8006-9d2308a6edf9