单次推送
先決條件¶
要與單一推送 API 同步,請確保發出授權令牌(API KEY)。如果您已經擁有該密鑰,請請求額外的權限。請參考 Hive 伺服器 API > 通知 > 推送 v4 > 認證 以查看如何請求和發出授權令牌。
Note
單一 Puch API 是非同步的,並按順序處理,API 請求 > 令牌查找 > 發送。
- API 請求:驗證請求數據並返回請求的響應代碼。
- 令牌查找:查找請求數據的推送令牌。可能會出現沒有令牌的情況。
- 發送:將數據傳輸到每個市場的推送服務器(例如 ADM、APNS、FCM)。從市場收到的響應顯示處理結果。
- 當在令牌查找和發送步驟中處理失敗時,不會將響應傳輸給調用推送服務器的客戶端。 如果您在發送數據後 10 分鐘內沒有收到推送,請聯繫 解決方案架構師團隊,Com2uS 平台。
按環境訪問 URL¶
| 伺服器 | URL |
|---|---|
| 生產環境 | https://notification.withhive.com |
| 沙盒環境 | https://sandbox-notification.withhive.com |
基本信息和请求参数¶
| 方法 | POST | ||||
|---|---|---|---|---|---|
| URL | /push/send | ||||
| 部分 | 字段名称 | 描述 | 类型 | 必需 | |
| 头部 | Content-Type | application/json;charset=utf-8 | |||
| Authorization | bearer {{API KEY}} | ||||
| 主体 | notice | 是否为通知警报(默认:false)。• true:作为通知警报发送。不会发送给未同意接收通知的接收者。如果在夜间(21:00~08:00)发送,则需要额外的夜间同意。有关详细信息,请参见通知警报工作流程。 • false:作为游戏警报发送(必需的操作警报)。无论是否同意接收通知,都会发送。※ 如果在设备/操作系统级别阻止通知,则无论通知设置如何,警报可能无法送达。 | 布尔值 | O | |
| identifiers | 标识符信息(最多100个)标识符结构和示例可以在下面找到 | identifier[] | O | ||
| game | gameid | 游戏ID | 字符串 | O | |
| appids | AppID列表 如果映射到标识符的AppID无效,则不会发送 建议
| 字符串[] | X | ||
| enableLocale | 是否應用語言區域
true false | 布林值 | O | ||
| payload | single | 如果 enableLocale=false,請求單一字段。 消息結構 如下。 | 消息 | O | |
| defaultLanguage | 如果 enableLocale=true,設置為默認語言 | 字符串 | |||
| locale {{LANGUAGE}} | 如果 enableLocale=true,通過區域字段設置。與單一字段中的消息信息相同 | 消息 | |||
| option | 選項信息 如下 | 選項 | X | ||
| actionInfo | android | ActionPayload 信息 如下 | ActionPayload | X | |
| ios | ActionPayload 信息 如下 | ActionPayload | X |
通知警報工作流程¶
通知警報僅發送給已同意接收的遊戲應用程序用戶。如果通知警報在 21:00~08:00 之間發送,則需要額外的同意以接收夜間警報。
通知警報工作流程的詳細信息如下:
- 如果用戶不同意接收通知警報,所有設置為通知的消息將不會發送。
- 只有同意接收通知警報的用戶才能同意夜間警報。
Warning
針對韓國用戶的廣告通知警示規定
當向韓國用戶發送通知警報時,這些被視為廣告警報,必須遵守《資訊與通訊網路法》第50條。廣告警報信息必須包含一個表明其為廣告的短語以及退出的指示。
- 廣告警報消息示例: (廣告) {message_body} (選擇退出: 在設置中更改)
Note
- 為了平滑的單次推送接收,建議在 appids 和 identifiers 欄位中僅輸入一個數據項目。
- 如果請求中包含多個識別碼或 appids,可能會導致推送交付延遲,因為無法指定搜索條件。
- 建議指定優先級最高的識別碼值,並避免僅配置具有 did 值的識別碼。
- 避免在遊戲欄位中僅指定 gameid 的請求。
- 如果 appids 欄位中沒有數據,則將搜索所有包含在 gameid 中的 appids,這可能會導致推送交付延遲。
標識結構¶
| 節 | 欄位名稱 | 描述 | 類型 | 必需 | |
|---|---|---|---|---|---|
| identifier | identifier | 至少必須包含兩者之一 優先順序:playerId,然後是did | 長整數 | O | |
| playerId | |||||
| did |
標識範例¶
訊息結構¶
| 部分 | 字段名称 | 描述 | 类型 | 必需 | |
|---|---|---|---|---|---|
| 消息 | 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) | 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 | 動作類型 (CURL, CLOSE) 默認: CLOSECURL 使用 action 欄位的值執行 URL 調用。CLOSE 關閉推送。 | enum(CURL, CLOSE) | O |
| action | 根據動作類型執行的動作 例如, https://....如果 actionType 為 CURL,則必需。 | 字串 | 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": "OK" }, "actionType": "CURL", "action": "https://examplecurl.com" }, { "titles": { "default": "Cancel" }, "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": "確定", "en": "OK", "ko": "확인" }, "actionType": "CURL", "action": "https://examplecurl.com" }, { "titles": { "default": "取消", "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
建議將請求數據以單行發送,無需換行,以便立即檢查伺服器日誌。
- 回應