跳轉至

活动注册

先決條件

要與註冊活動的 API 同步,請確保發出授權令牌(API KEY)。如果您已經擁有該密鑰,請請求額外的權限。請參考 Hive Server API > Notification > Push v4 > Authentication 以查看如何請求和發出授權令牌。

註冊活動的 API

基本數據和請求變數

方法 POST
網址 /push/campaigns
部門 欄位名稱 描述 類型 必要
標頭 Content-Type application/json;charset=utf-8
授權 bearer {{API KEY}}
主體 id 編輯活動的必要欄位 整數
status 編輯活動的必要欄位 整數
公司 公司
  • gamevil: Com2uS Holdings
  • com2us: Com2uS
  • gcp: Com2uS Platform
字串 O
companyIndex 公司代碼(在 AppCenter 註冊的公司編號) 整數 O
描述 活動的描述 字串 O
通知 是否發送通知 布林值 X
類型 發送類型
  • B: 批量推送
  • T: 目標推送
字串 O
targetingId 目標 ID 在目標活動的必要欄位 整數
登記人 姓名 登記人姓名 字串 X
id 登記人 ID 字串 O
預約 本地化 此標誌決定在發送通知時是否根據用戶的時區應用計劃。
  • true: 通知將根據用戶的當地時區發送。
  • false: 發送通知的時區將根據gmtOffset值確定。
布林值 O
startDate startDate 代表计划通知发送开始的日期,而 endDate 代表通知发送结束的日期。
在这两个日期之间,将根据指定的时间 (time 字段) 发送推送通知。
(ISO 8601 格式,YYYY-MM-DD)
字符串 O
endDate 字符串 O
time 发送推送的时间 (HH:mm) 字符串 O
gmtOffset 此字段用于指定在 localizing 设置为 false 时发送通知的时区。它表示与 UTC 的差异(以秒为单位),可以取值范围在 -4320050400 之间。默认值为 32400,即韩国标准时间 (KST) 的偏移量。
-18000 代表 UTC-5 (EST)。
32400 代表 UTC+9 (KST)。
示例:
如果 startDate2025-11-06time17:00,而 gmtOffset-18000,则将开始发送时间为 2025-11-06T17:00-5:00
长整型 X
repeat 此标志指示是否在特定期间内重复发送通知。 布尔型 O
weekday 这表示将重复发送通知的星期几。
  • 1: 星期一
  • 2: 星期二
  • 3: 星期三
  • 4: 星期四
  • 5: 星期五
  • 6: 星期六
  • 7: 星期日
整数[] X
skip 在持续发送期间跳过发送推送的日期 字符串[] X
distribution enable 是否发送分发通知 布尔型 X
interval 分发发送的间隔 整数 X
count 分发发送的数量 整数 X
continents 按选定大陆的信息列表 (参考 国家代码) 查看 CampaignContinent 结构 和下面的 示例 CampaignContinent[] O
國家 所選國家的信息(參考國家代碼 字串[] O
遊戲 遊戲索引 遊戲索引 整數 O
伺服器ID 伺服器ID的列表 字串[] X
應用[] 應用索引 應用索引 整數 O
應用ID AppId 字串 O
預設語言 預設設置語言(參考語言代碼 字串 O
通知 {{LANGUAGE}} 消息信息 檢查消息結構和下面的示例 消息 X
選項 徽章 推送通知的徽章 整數 X
覆蓋 是否覆蓋推送 布林值 X
折疊鍵 覆蓋推送的鍵值 字串 X
參與度 用戶參與度 字串 X
評論 評論 字串 X
群組鍵 當用戶在iOS或Android操作系統環境中接收通知時,暴露通知的群組鍵值。設備操作系統中選擇的通知設置默認適用。關於該選項的更多詳細信息,請參見以下文檔。 字串 X
安卓 圖標 當推送通知出現在用戶設備上時,這是暴露的圖標圖像文件名。圖像文件應位於/src/main/res/drawable。有關支持的圖像文件格式,請參見這裡。如果您想在網絡上暴露圖像而不是圖像文件,請在此字段中輸入圖像URL,而不是圖像文件名。如果此字段留空,將暴露應用圖標圖像。 字串 X
聲音 這是當推播通知出現在用戶設備上時要播放的通知聲音檔案的名稱。您可以指定包含在應用程式包中的聲音來源檔案,並且聲音來源檔案應位於/src/main/res/raw中。如果此欄位留空,則使用系統的預設聲音檔案。 字串 X
優先級 要發送到 Android 設備的消息優先級。此優先級是 FCM 概念,控制消息發送的時間。它可以具有 NORMAL 或 HIGH 的值;預設為 NORMAL。更多資訊,請參見Firebase 指南
  • NORMAL = 數據消息的預設優先級。正常優先級的消息在設備不處於睡眠模式時立即發送。當您的設備處於睡眠模式時,為了節省電池,傳輸可能會延遲,直到設備退出睡眠模式。對於不太時間緊迫的消息,例如新電子郵件通知、保持 UI 同步或背景應用數據同步,請選擇正常傳送優先級。
  • HIGH = FCM 將嘗試立即發送高優先級消息,並且如果必要,FCM 可能會喚醒設備並執行一些有限的處理,包括非常有限的網絡訪問。高優先級消息通常涉及用戶與應用或通知的互動。
enum(NORMAL, HIGH) X
ios 聲音 這是當推播通知出現在用戶設備上時要播放的通知聲音來源檔案的名稱。聲音檔案必須存在於應用容器的Library/Sounds或應用的主包中。如果此欄位為空,則自動設置為 "default",並使用用戶的 Apple 設備系統預設聲音來源。 td> 字串 X
Note

有關 option 的更多詳細信息,請參閱各自市場的指導方針。

CampaignContinent 結構

區域 欄位名稱 描述 類型 必填
CampaignContinent 大陸 大陸類型 字串 O
countries 大陸中國家的代碼 字串[] O

CampaignContinent 範例

[
    {
      "name": "Africa",
      "countries": [
        "Algeria",
        "Angola",
        "Benin",
        "Sudan",
        "Swaziland",
        "Tanzania",
        "Togo",
        "Tunisia",
        "Zambia",
        "Zimbabwe"
      ]
    }
]

訊息結構

區域 欄位名稱 描述 類型 必填
訊息 android title 標題 字串 O
message 訊息 字串 O
messageExpanded 擴展訊息 字串 X
imageUrl 圖片網址 字串 X
ticker 走馬燈 字串 X
summaryText 摘要訊息 字串 X
iOS title 標題 字串 O
message 訊息 字串 O
mediaUrl 圖片網址 字串 X

訊息範例

{
"ko": {
      "android": {
        "messageExpanded": "(Ad) TEST(Block: Available in settings)",
        "ticker": "gg",
        "title": "(Ad)test",
        "message": "(Ad) test (Restriction: Available in settings)",
        "summaryText": "",
        "imageUrl": ""
      },
      "ios": {
        "mediaUrl": "",
        "title": "Push",
        "message": "(Ad) TEST (Block: Available in settings)"
      },
    }
}

輸出結果

標題 內容類型 application/json;charset=utf-8
UUID {{UUID}}
主體 如果成功,主體為空

回應狀態碼

描述
200 成功 (主體為空)
400 錯誤的請求 POST 數據被省略
JSON 格式錯誤
必需的元素被省略或無效
可通過主體中的原因消息進一步檢查
401 未授權 請求消息中的授權標頭被省略或無效
授權令牌(API KEY)未註冊
無法訪問相關 API
403 禁止 授權標頭的授權方案不是 "Bearer"(僅支持 Bearer)
404 未找到 請求 URL 錯誤
500 內部伺服器錯誤 伺服器內部錯誤
502 錯誤的網關 推送網關伺服器過載
網絡連接錯誤
503 服務不可用 API 伺服器或授權伺服器凍結

範例代碼

活動註冊

  • 呼叫
curl -v -L \
-H "Content-Type: application/json"  \
-H "Authorization: Bearer {API KEY}" \
-d '{
    "description": "TEST",
    "status": 1,
    "company": "gcp",
    "companyIndex": 3,
    "type": "B",
    "targetingId": 0,
    "reservation": {
        "localizing": false,
        "startDate": "2025-11-06",
        "endDate": "2025-11-06",
        "time": "17:00:00",
        "gmtOffset": 32400,
        "repeat": false,
        "periodType": "",
        "weekday": [],
        "skip": []
    },
    "game": {
        "gameName": "Step by Step",
        "gameindex": 597,
        "serverIds": [],
        "apps": [
            {
                "appindex": 20009,
                "appid": "com.gcp.stepbystep.android.google.global.normal",
                "versions": []
            }
        ],
        "serverAll": true
    },
    "distribution": {
        "enable": false,
        "interval": 0,
        "count": 0
    },
    "defaultLanguage": "ko",
    "option": {
        "badge": 1,
        "engagement": "",
        "overwrite": false,
        "collapseKey": "0",
        "comment": "",
        "groupKey": "",
        "android": {
            "icon": "",
            "sound": "",
            "priority": "high"
        },
        "ios": {
            "sound": ""
        }
    },
    "registrant": {
        "id": "test",
        "name": "Test"
    },
    "notification": {
        "ko": {
            "android": {
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)",
                "messageExpanded": "",
                "ticker": "",
                "summaryText": "",
                "imageUrl": ""
            },
            "ios": {
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)",
                "mediaUrl": ""
            }
        }
    },
    "countries": [
        "KR"
    ],
    "continents": [
        {
            "name": "Africa",
            "countries": []
        },
        {
            "name": "Americas",
            "countries": []
        },
        {
            "name": "Asia",
            "countries": [
                "South Korea"
            ]
        },
        {
            "name": "Europe",
            "countries": []
        },
        {
            "name": "Oceania",
            "countries": []
        },
        {
            "name": "Polar",
            "countries": []
        }
    ]
}' \
https://sandbox-notification.qpyou.cn/push/campaigns
  • 請求
> POST /push/campaigns HTTP/1.1
> User-Agent: curl/7.29.0
> Host: sandbox-notification.qpyou.cn
> Accept: */*
> Content-Type: application/json
> Authorization: Bearer {API KEY}
> Content-Length: 1314
> Expect: 100-continue
  • 回應
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 1491
< Content-Type: application/json
<: 3d18420b-4cf3-48a8-a3bf-6c9ac6cbe86a
<
{
    "uuid": "3d18420b-4cf3-48a8-a3bf-6c9ac6cbe86a",
    "status": 1,
    "modify": true,
    "id": 10163,
    "type": "B",
    "company": "gcp",
    "companyIndex": 3,
    "description": "TEST",
    "targetingId": 0,
    "reservation": {
        "localizing": false,
        "startDate": "2025-11-06",
        "endDate": "2025-11-06",
        "time": "17:00:00",
        "repeat": false,
        "gmtOffset": 32400
    },
    "distribution": {
        "count": 0,
        "interval": 0,
        "enable": false
    },
    "continents": [
        {
            "name": "Africa",
            "countries": []
        },
        {
            "name": "Americas",
            "countries": []
        },
        {
            "name": "Asia",
            "countries": [
                "South Korea"
            ]
        },
        {
            "name": "Europe",
            "countries": []
        },
        {
            "name": "Oceania",
            "countries": []
        },
        {
            "name": "Polar",
            "countries": []
        }
    ],
    "countries": [
        "KR"
    ],
    "lastEndTime": 1762448400,
    "lastEndTimestamp": 1762416000,
    "tasks": {
        "17:00:00": {
            "startTime": 1762448400,
            "endTime": 1762448400,
            "time": "17:00:00",
            "gmtOffset": 32400,
            "zones": [
                "Asia/Seoul"
            ],
            "startTimestamp": 1762416000,
            "endTimestamp": 1762416000
        }
    },
    "game": {
        "gameindex": 597,
        "gameName": "Step by Step",
        "apps": [
            {
                "appid": "com.gcp.stepbystep.android.google.global.normal",
                "appindex": 20009
            }
        ]
    },
    "defaultLanguage": "ko",
    "notification": {
        "ko": {
            "android": {
                "messageExpanded": "",
                "ticker": "",
                "summaryText": "",
                "imageUrl": "",
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)"
            },
            "ios": {
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)",
                "mediaUrl": ""
            }
        }
    },
    "option": {
        "badge": 1,
        "engagement": "",
        "overwrite": false,
        "collapseKey": "0",
        "comment": "",
        "groupKey": "",
        "android": {
            "icon": "",
            "priority": "high",
            "sound": ""
        },
        "ios": {
            "sound": ""
        }
    },
    "timestamp": {
        "date": "2024-10-21 15:18:57.923",
        "time": 1729491537923
    },
    "registrant": {
        "name": "Test",
        "id": "test"
    },
    "dryRun": false,
    "debug": false
}

活動修改

  • 呼叫
curl -v -L \
-H "Content-Type: application/json"  \
-H "Authorization: Bearer {API KEY}" \
-d '{
    "id": 10163,
    "description": "TEST",
    "status": 1,
    "company": "gcp",
    "companyIndex": 3,
    "type": "B",
    "targetingId": 0,
    "reservation": {
        "localizing": false,
        "startDate": "2025-11-06",
        "endDate": "2025-11-06",
        "time": "17:00:00",
        "gmtOffset": -18000,
        "repeat": false,
        "periodType": "",
        "weekday": [],
        "skip": []
    },
    "game": {
        "gameName": "Step by Step",
        "gameindex": 597,
        "serverIds": [],
        "apps": [
            {
                "appindex": 20009,
                "appid": "com.gcp.stepbystep.android.google.global.normal",
                "versions": []
            }
        ],
        "serverAll": true
    },
    "distribution": {
        "enable": false,
        "interval": 0,
        "count": 0
    },
    "defaultLanguage": "ko",
    "option": {
        "badge": 1,
        "engagement": "",
        "overwrite": false,
        "collapseKey": "0",
        "comment": "",
        "groupKey": "",
        "android": {
            "icon": "",
            "sound": "",
            "priority": "high"
        },
        "ios": {
            "sound": ""
        }
    },
    "timestamp": {
        "time": 0,
        "date": ""
    },
    "registrant": {
        "id": "test",
        "name": "Test"
    },
    "notification": {
        "ko": {
            "android": {
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)",
                "messageExpanded": "",
                "ticker": "",
                "summaryText": "",
                "imageUrl": ""
            },
            "ios": {
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)",
                "mediaUrl": ""
            }
        }
    },
    "countries": [
        "KR"
    ],
    "continents": [
        {
            "name": "Africa",
            "countries": []
        },
        {
            "name": "Americas",
            "countries": []
        },
        {
            "name": "Asia",
            "countries": [
                "South Korea"
            ]
        },
        {
            "name": "Europe",
            "countries": []
        },
        {
            "name": "Oceania",
            "countries": []
        },
        {
            "name": "Polar",
            "countries": []
        }
    ]
}' \
https://sandbox-notification.qpyou.cn/push/campaigns
  • 請求
> POST /push/campaigns HTTP/1.1
> User-Agent: curl/7.29.0
> Host: sandbox-notification.qpyou.cn
> Accept: */*
> Content-Type: application/json
> Authorization: Bearer {API KEY}
> Content-Length: 1314
> Expect: 100-continue
  • 回應
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Content-Length: 1491
< Content-Type: application/json
< UUID: 65420989-ab96-4587-b19a-195fe13f9086
<
{
    "uuid": "65420989-ab96-4587-b19a-195fe13f9086",
    "status": 1,
    "id": 10163,
    "type": "B",
    "company": "gcp",
    "companyIndex": 3,
    "description": "TEST",
    "targetingId": 0,
    "reservation": {
        "localizing": false,
        "startDate": "2025-11-06",
        "endDate": "2025-11-06",
        "time": "17:00:00",
        "repeat": false,
        "gmtOffset": -18000
    },
    "distribution": {
        "count": 0,
        "interval": 0,
        "enable": false
    },
    "continents": [
        {
            "name": "Africa",
            "countries": []
        },
        {
            "name": "Americas",
            "countries": []
        },
        {
            "name": "Asia",
            "countries": [
                "South Korea"
            ]
        },
        {
            "name": "Europe",
            "countries": []
        },
        {
            "name": "Oceania",
            "countries": []
        },
        {
            "name": "Polar",
            "countries": []
        }
    ],
    "countries": [
        "KR"
    ],
    "lastEndTime": 1762498800,
    "lastEndTimestamp": 1762466400,
    "tasks": {
        "07:00:00": {
            "startTime": 1762498800,
            "endTime": 1762498800,
            "time": "07:00:00",
            "gmtOffset": -18000,
            "zones": [
                "Asia/Seoul"
            ],
            "startTimestamp": 1762466400,
            "endTimestamp": 1762466400
        }
    },
    "game": {
        "gameindex": 597,
        "gameName": "Step by Step",
        "apps": [
            {
                "appid": "com.gcp.stepbystep.android.google.global.normal",
                "appindex": 20009
            }
        ]
    },
    "defaultLanguage": "ko",
    "notification": {
        "ko": {
            "android": {
                "messageExpanded": "",
                "ticker": "",
                "summaryText": "",
                "imageUrl": "",
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)"
            },
            "ios": {
                "title": "TEST",
                "message": "(Advertising) TEST (Unsubscribe: Change in settings)",
                "mediaUrl": ""
            }
        }
    },
    "option": {
        "badge": 1,
        "engagement": "",
        "overwrite": false,
        "collapseKey": "0",
        "comment": "",
        "groupKey": "",
        "android": {
            "icon": "",
            "priority": "high",
            "sound": ""
        },
        "ios": {
            "sound": ""
        }
    },
    "timestamp": {
        "date": "2024-10-21 15:25:45.611",
        "time": 1729491945611
    },
    "registrant": {
        "name": "Test",
        "id": "test"
    },
    "dryRun": false,
    "debug": false
}

國家代碼

大陸 國家 代碼 國家 代碼
非洲 安哥拉 AO 馬達加斯加 MG
布基納法索 BF 馬利 ML
布隆迪 BI 毛里塔尼亞 MR
貝南 BJ 毛里求斯 MU
博茨瓦納 BW 馬拉維 MW
剛果民主共和國 CD 莫桑比克 MZ
中非共和國 CF 納米比亞 NA
剛果共和國 CG 尼日爾 NE
象牙海岸 CI 尼日利亞 NG
喀麥隆 CM 留尼旺 RE
卡波維德 CV 盧旺達 RW
吉布提 DJ 塞舌爾 SC
阿爾及利亞 DZ 蘇丹 SD
埃及 EG 聖赫勒拿 SH
西撒哈拉 EH 塞拉利昂 SL
厄立特里亞 ER 塞內加爾 SN
衣索比亞 ET 索馬利亞 SO
加蓬 GA 南蘇丹 SS
加納 GH 聖多美和普林西比 ST
甘比亞 GM 斯威士蘭 SZ
幾內亞 GN 查德 TD
赤道幾內亞 GQ 法屬南方領地 TF
幾內亞比索 GW 多哥 TG
英屬印度洋領地 IO 突尼斯 TN
肯尼亞 KE 坦尚尼亞 TZ
科摩羅 KM 烏干達 UG
利比里亞 LR 馬約特 YT
萊索托 LS 南非 ZA
利比亞 LY 贊比亞 ZM
摩洛哥 MA 津巴布韋 ZW
美洲 安提瓜和巴布達 AG 洪都拉斯 HN
安圭拉 AI 海地 HT
阿根廷 AR 牙買加 JM
阿魯巴 AW 聖基茨和尼維斯 KN
巴巴多斯 BB 開曼群島 KY
聖巴泰勒米 BL 聖露西亞 LC
百慕達 BM 聖馬丁 MF
玻利維亞 BO 馬丁尼克 MQ
博內爾、聖尤斯特歐斯和薩巴 BQ 蒙特塞拉特 MS
巴西 BR 墨西哥 MX
巴哈馬 BS 尼加拉瓜 NI
伯利茲 BZ 巴拿馬 PA
加拿大 CA 秘魯 PE
智利 CL 聖皮埃爾和密克隆 PM
哥倫比亞 CO 波多黎各 PR
哥斯達黎加 CR 巴拉圭 PY
古巴 CU 蘇利南 SR
庫拉索 CW 薩爾瓦多 SV
多米尼克 DM 聖馬丁 SX
多明尼加共和國 DO 特克斯和凱科斯群島 TC
厄瓜多 EC 千里達和多巴哥 TT
福克蘭群島 FK 美國小離島 UM
格林納達 GD 美國 US
法屬圭亞那 GF 烏拉圭 UY
格林蘭 GL 聖文森特和格林納丁斯 VC
瓜德羅普 GP 委內瑞拉 VE
南喬治亞和南桑威奇群島 GS 英屬維爾京群島 VG
瓜地馬拉 GT 美屬維爾京群島 VI
圭亞那 GY
亞洲 阿聯酋 AE 黎巴嫩 LB
阿富汗 AF 斯里蘭卡 LK
亞美尼亞 AM 緬甸 MM
亞塞拜然 AZ 蒙古 MN
孟加拉國 BD 澳門 MO
巴林 BH 馬爾地夫 MV
文萊 BN 馬來西亞 MY
不丹 BT 尼泊爾 NP
中國 CN 阿曼 OM
喬治亞 GE 菲律賓 PH
香港 HK 巴基斯坦 PK
印尼 ID 巴勒斯坦領土 PS
以色列 IL 卡塔爾 QA
印度 IN 沙烏地阿拉伯 SA
伊拉克 IQ 新加坡 SG
伊朗 IR 敘利亞 SY
約旦 JO 泰國 TH
日本 JP 塔吉克斯坦 TJ
吉爾吉斯斯坦 KG 東帝汶 TL
柬埔寨 KH 土庫曼斯坦 TM
北韓 KP 土耳其 TR
南韓 KR 台灣 TW
科威特 KW 烏茲別克斯坦 UZ
哈薩克斯坦 KZ 越南 VN
寮國 LA 也門 YE
歐洲 安道爾 AD 冰島 IS
阿爾巴尼亞 AL 意大利 IT
奧地利 AT 泥土 JE
阿蘭群島 AX 列支敦士登 LI
波斯尼亞和黑塞哥維那 BA 立陶宛 LT
比利時 BE 盧森堡 LU
保加利亞 BG 拉脫維亞 LV
白俄羅斯 BY 摩納哥 MC
瑞士 CH 摩爾多瓦 MD
塞浦路斯 CY 黑山 ME
捷克共和國 CZ 馬其頓 MK
德國 DE 馬爾他 MT
丹麥 DK 荷蘭 NL
愛沙尼亞 EE 挪威 NO
西班牙 ES 波蘭 PL
芬蘭 FI 葡萄牙 PT
法羅群島 FO 羅馬尼亞 RO
法國 FR 塞爾維亞 RS
英國 GB 俄羅斯 RU
根西島 GG 瑞典 SE
直布羅陀 GI 斯洛文尼亞 SI
希臘 GR 斯瓦爾巴群島和揚馬延 SJ
克羅埃西亞 HR 斯洛伐克 SK
匈牙利 HU 聖馬力諾 SM
愛爾蘭 IE 烏克蘭 UA
馬恩島 IM 梵蒂岡 VA
大洋洲 美國薩摩亞 AS 諾福克島 NU
澳洲 AU 新西蘭 NZ
可可斯群島 CC 法屬波利尼西亞 PF
庫克群島 CK 巴布亞新幾內亞 PG
聖誕島 CX 皮特肯 PN
斐濟 FJ 帕勞 PW
密克羅尼西亞 FM 所羅門群島 SB
關島 GU 托克勞 TK
基里巴斯 KI 汀吉 TO
馬紹爾群島 MH 瓦努阿圖 VU
北馬里亞納群島 MP 瓦利斯和富圖納 WF
新喀里多尼亞 NC 薩摩亞 WS
諾福克島 NF
極地 南極洲 AQ

語言代碼

語言代碼 語言
ko 韓文
zh-hans 中文(簡體)
zh-hant 中文(繁體)
en 英文
ja 日文
ar 阿拉伯文
fr 法文
de 德文
es 西班牙文
pt 葡萄牙文
th 泰文
it 意大利文
ru 俄文
id 印尼文
vi 越南文
tr 土耳其文