跳转至

活动注册

前提条件

要与注册活动的 API 同步,请确保发出授权令牌(API 密钥)。如果您已经拥有密钥,请请求额外的权限。请参考 Hive 服务器 API > 通知 > 推送 v4 > 认证 以检查如何请求和发出授权令牌。

注册活动的 API

基本数据和请求变量

方法 POST
网址 /push/campaigns
部门 字段名称 描述 类型 是否必需
头部 Content-Type application/json;charset=utf-8
授权 bearer {{API KEY}}
主体 id 编辑活动的必要字段 整数
状态 编辑活动的必要字段 整数
公司 公司
  • 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:00gmtOffset-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可能会唤醒设备并执行一些有限的处理,包括非常有限的网络访问。高优先级消息通常涉及用户与应用程序或通知的交互。
枚举(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 标题 标题 字符串 O
消息 消息 字符串 O
扩展消息 扩展消息 字符串 X
图片网址 图片网址 字符串 X
股票代码 股票代码 字符串 X
摘要文本 摘要消息 字符串 X
iOS 标题 标题 字符串 O
消息 消息 字符串 O
媒体网址 图片网址 字符串 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 图瓦卢 TV
北马里亚纳群岛 MP 瓦努阿图 VU
新喀里多尼亚 NC 瓦利斯和富图纳 WF
诺福克岛 NF 萨摩亚 WS
瑙鲁 NR
极地 南极洲 AQ

语言代码

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