消息订阅查询&消息下发更新时间: 2025-07-17 15:42:00
一、已订阅用户查询接口
- 接口说明:获取所有的已经订阅了游戏的用户列表,订阅数据到游戏内消息模板维度。
- 接口路径:https://api-mini.s.migames.com/tgmanager/api/msg/listSubScribeSetting
- 请求方式:POST
- 数据格式:JSON
- 请求参数:
字段 | 中文名 | 类型 | 是否必填 | 说明 |
developerID | 开发者id | Long | 是 | 开发者id |
devAppID | 应用id | Long | 是 | 开发者应用id |
sign | 签名 | String | 是 | 使用appKey、developerID、devAppID进行签名,签名规则见4.4.3 |
lastID | 记录id | long | 是 | 上次拉取到的最大recordID,首次拉取传0。 注意:recordID不一定连续。 举例:首次拉取时lastID=0,pageSize=10,拉取到recordID为1~10的数据;则第二次拉取时lastID=10,pageSize=10 则拉取到11~20的数据。 |
pageSize | 每页数量 | long | 是 | 每页数量,最大100,默认100,拉取到的数量<pageSize表示拉取完 |
- 响应参数:
- 一级结构
字段 | 中文名 | 类型 | 说明 |
code | 响应码 | Int | 0表示成功 |
msg | 错误信息 | string | 错误信息 |
data | 业务响应信息 | Object | 业务响应信息 |
traceID | 响应id | string | 接口响应会返回内部生成的traceID |
- 二级结构-data
字段 | 中文名 | 类型 | 说明 |
total | 总数 | long | 已订阅总数 |
list | 订阅用户 | List<Object> | 错误信息 |
- 三级结构
字段 | 中文名 | 类型 | 说明 |
recordID | 记录id | long | 记录id |
openID | 用户id | long | 用户id |
subscribeTemplateID | 已订阅的模板id | List<long> | 已订阅的模板id |
- 接口示例:
- 请求示例
{
"developerID":${developerID},
"devAppID":"${devAppID}",
"lastID":0,
"pageSize": 100,
"sign":"${sign}"
}'
- 响应示例
{
"code": 0,
"msg": "success",
"data":{
"total":100,
"list":[
{
"recordID":1,
"openID":"xxxxx",
"subscribeTemplateID":[1001,1002]
}
]
}
}
二、消息下发接口
- 接口说明:通过消息下发接口下发消息,若配置的消息内容中包含了占位符(如{level},下发消息时可指定占位符的取值(如level=100)。
- 注意:下发接口成功不代表实际消息下发成功。若下发的用户不存在或者用户未订阅游戏,则实际下发失败。若超过了平台规定的单游戏单用户下发限制数,则实际也会下发失败。
- 接口路径: https://api-mini.s.migames.com/tgmanager/api/msg/sendMsg
- 请求方式:POST
- 数据格式:JSON
- 请求参数:
字段 | 中文名 | 类型 | 是否必填 | 说明 |
developerID | 开发者id | Long | 是 | 开发者id |
devAppID | 应用id | Long | 是 | 开发者应用id |
sign | 签名 | String | 是 | 使用appKey、developerID、devAppID、templateID、contentID进行签名,签名规则见4.4.3 |
templateID | 消息模板id | long | 是 | 生效中的消息模板id |
contentID | 消息内容id | long | 是 | 生效中的消息内容id |
openIDs | 目标openid | list<long> | 是 | 下发目标,单次最多100个 |
placeholderParams | 消息内容占位符 | Map[String]String | 否 | 填充消息内容中配置的占位符 |
- 响应参数:
字段 | 中文名 | 类型 | 说明 |
code | 响应码 | Int | 0表示成功 |
msg | 错误信息 | string | 错误提示信息 |
traceID | 响应id | string | 接口响应会返回内部生成的traceID |
- 接口示例:
- 请求示例
{
"developerID":${developerID},
"devAppID":${devAppID},
"templateID":${templateID},
"contentID":${contentID},
"placeholderParams": {},
"sign":"${sign}",
"openIDs":[1,2]
}'
- 接口示例:
- 请求示例
{
"code": 0,
"msg": "success"
}
三、签名sign生成规则
- 签名规则:使用指定字段生成待签字符串,然后使用appKey进行hmac-sha1进行签名,结果大小写均可。
- 订阅用户查询待签字符串:devAppID=${devAppID}&developerID=${developerID}
- 消息下发待签字符串:contentID=${contentID}&devAppID=${devAppID}&developerID=${developerID}&templateID=${templateID}
- 代码示例:
- go示例
func GenerateSign(str string, key string) string {
// 1. HMAC-SHA1加密
h := hmac.New(sha1.New, []byte(key))
h.Write([]byte(str))
signBytes := h.Sum(nil)
// 2. hex编码
return hex.EncodeToString(signBytes)
}
- java示例
public class HmacSigner {
public static String generateSign(String str, String key) {
try {
// 1. HMAC-SHA1加密
Mac hmac = Mac.getInstance("HmacSHA1");
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA1");
hmac.init(keySpec);
byte[] signBytes = hmac.doFinal(str.getBytes(StandardCharsets.UTF_8));
// 2. hex编码
return bytesToHex(signBytes);
} catch (Exception e) {
throw new RuntimeException("签名生成失败", e);
}
}
private static String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
}
上一篇:消息订阅服务
下一篇:小游戏合作常见问题(FAQ)
文档内容是否有帮助?
有帮助
无帮助