本章节将详细介绍TUTK P2P SDK中KPNS(Kalay Push Notification Service)核心指令(注册、绑定、解绑、同步)的参数规范、使用示例及错误码说明,为手机端集成KPNS推送能力提供完整技术指引。
1. 手机端注册
客户端注册是让用户 APP 在 KPNS 服务器注册的过程,未注册则无法进行设备绑定,且需定期更新从消息中心获取的 token,用户无白名单限制。
参数说明
| 参数名称 | 是否可选 | 说明 |
|---|---|---|
cmd | 必须 | 客户端 APP 注册指令,固定使用 client |
appid | 必须 | 发送到第三方推送服务器所需的凭证 ID,需预先在 KPNS 配置 |
udid | 必须 | 手机唯一识别 ID,可由 APP 开发人员自定义,不同手机间不可重复(由算法生成,建议与手机强关联,即每个手机不管什么时候,这个udid都是唯一的,相同的),注册成功后作为唯一识别 ID,无需每次变更 |
os | 必须 | 客户端的消息推送系统,可选值:android、ios、qqxg、baidu、jiguang、oppo、huawei、mi、wechat |
token | 必须 | APP 端从第三方推送中心获取,第三方推送依据此 token 发送到指定设备,token 有实效性,建议每次开启 APP 时检查token是否失效,如果失效,需获取并更新KPNS服务器端记录 |
lang | 必须 | 手机语系,默认值为 enUS,其他主要语系:zh_CN(简体中文),fr(法语),德语(de),日语(ja) |
dev | iOS 必须 | dev=1(开发用,往 iOS sandbox gateway 发送);dev=0(正式用,往 iOS production gateway 发送),其他平台可不填,默认 dev=0 |
bgfetch | 可选 | 支持 iOS 的 Silent push(content-available),允许 APP 在后台运行时获取 payload 相关信息,0 为关闭(默认),1 为开启(建议通过 custom_payload 实现,不推荐直接使用此参数) |
Model | 可选 | 客户端型号(详细描述) |
Appver | 可选 | APP 版本(详细描述) |
指令示例
/tpns?cmd=client&os={%0s%}&appid={%APPID%}&udid={%UDlD%}&token={%TOKEN%}&lang={%LANG %}& dev=0&bgfetch=0
错误信息
| 错误码/信息 | 说明 |
|---|---|
| 210 Success, But No Data. | 执行成功但无返回数据 |
| 第三方回复“Fail” | 将显示第三方推送服务器返回的对应错误信息 |
2. 手机绑定设备
APP 用户与设备绑定的操作,一个用户可绑定多个设备,一个设备也可绑定多个用户(量产环境下设备最多绑定 100 个 client,通常建议不超过 5 个)。若绑定的设备 UID 不在 KPNS 白名单内,绑定操作将失败。
参数说明
| 参数名称 | 是否可选 | 说明 |
|---|---|---|
cmd | 必须 | 绑定 UID 的指令,固定使用 mapping |
os | 必须 | 需与 Client 注册时的 os 一致,否则无法送达目标手机 |
appid | 必须 | 需与 Client 注册时的 appid 一致,否则无法送达目标 |
udid | 必须 | 需与 Client 注册时的 udid 一致,否则无法送达目标 |
uid | 必须 | 需绑定的 UID 编号 |
interval | 可选 | 每封消息的间隔时间,服务器默认 120 秒 |
sound | 可选 | 推送声音配置文件,默认值为 sound.alf |
format | 可选 | 自定义 alert 消息格式,需将格式字符串以 base64 编码发送,中文内容需以 utf8 编码送出,由 APP 端接收后转换为目标编码 |
alias | 可选 | 自定义推送通知消息中显示的设备名称 |
customized_payload | 可选 | 自定义 payload,未提供时将使用默认值 |
customized_payload_default | 可选 | 自定义 payload 默认值,当 customized_payload 参数未赋值时生效 |
message_type | 可选 | 消息类型(仅针对中国推送平台),可选 Notify(通知)或 message(透传,默认值);若服务商不支持透传(如 OPPO),默认值为 Notify |
格式使用示例(门磁传感器)
希望显示的 alert 消息:“Warning: {dev_name} {event_type}”(其中 dev_name 和 event_type 为设备端传入的变量)。
- 设备为开门侦测器,发生开门事件时,设备发送指令:
cmd=event&uid={UID}&dev_name=Door Sensor&event_type=1 - 对应的 alert 内容将显示为:“Warning: Door Sensor Open Alarm”
注意事项
1. 发送的字符串及系统传输内容需遵守第三方推送中心的长度限制。
2. Alias 变更后,需重新执行 mapping 程序。
指令示例
/tpns?cmd=mapping&os={%os%}&appid={%APPID%}&uid={%UID}&udid={%UDID%}&interval=&sound(%SOUND%)&format={%alert format%}&alias=frontdoor
错误信息
| 错误码/信息 | 说明 |
|---|---|
| 200 Success. | 执行成功 |
| 210 Success, But No Data. | 执行成功但无返回数据 |
| 211 Waiting. | 请求处于等待处理状态 |
| 401 Unauthorized. | 未授权访问(权限验证失败) |
| 406 Parameter Error. | 参数错误(参数缺失/格式错误) |
3. 手机解绑设备
解除设备与客户端的绑定,解除后设备发送的所有消息将不再推送至该客户端,此操作与白名单无关,即使设备已移除白名单仍可执行。
参数说明
| 参数名称 | 是否可选 | 说明 |
|---|---|---|
cmd | 必须 | 解除绑定的指令,固定使用 rm_mapping |
os | 必须 | 需与 Client 注册时的 os 一致,否则无法顺利解除 |
appid | 必须 | 需与 Client 注册时的 appid 一致,否则无法顺利解除 |
udid | 必须 | 需与 Client 注册时的 udid 一致,否则无法顺利解除 |
uid | 必须 | 需要解除绑定的 UID 编号 |
指令示例
/tpns?cmd=rm mapping&os={%os%}&appid={%APPID%}&uid={%UID%}&udid={%UDID%}
错误信息
| 错误码/信息 | 说明 |
|---|---|
| 210 Success, But No Data. | 执行成功但无返回数据 |
| 211 Waiting. | 请求处于等待处理状态 |
| 401 Unauthorized. | 未授权访问(权限验证失败) |
| 406 Parameter Error. | 参数错误(参数缺失/格式错误) |
| 411 Mapping Error. | 绑定关系错误(无对应绑定记录) |
| 412 APPID Error. | APPID 配置错误/不存在 |
| 422 White Block. | 白名单限制(仅解除绑定场景无实际影响) |
| 520 Message Did Not Be Send. | 第三方推送服务器回复 Fail(消息发送失败) |
4. 同步
用于解决因网络问题导致的注册或解除注册指令未送达的问题,通过上传用户的 UID 列表更新绑定状态,不比对 UID 是否在白名单内(当前版本为提升存取效率,暂不包含白名单比对),可一次处理多个UID的绑定和解绑。
参数说明
| 参数名称 | 是否可选 | 说明 |
|---|---|---|
cmd | 必须 | 绑定同步的指令,固定使用 mapsync |
appid | 必须 | 需与 Client 注册时的 appid 一致,否则无法完成同步,需预先在 KPNS 配置 |
os | 必须 | 需与 Client 注册时的 os 一致,否则无法完成同步 |
udid | 必须 | 需与 Client 注册时的 udid 一致,否则无法完成同步,旧版无此参数时以 Token 代替 |
map | 必须 | base64 编码后的 json 格式数据,核心同步内容为绑定的 UID 列表(格式:[{"uid":"aaa"},{"uid":"bbb"},...]),也可包含 interval、sound 等 mapping 相关的其他参数 |
指令示例
/tpns?cmd=mapsync&os={%os%}&appid={%APPID%}&udid={%UDID%}&map=base64(mapping list)
错误信息
| 错误码/信息 | 说明 |
|---|---|
| 200 Success. | 执行成功 |
| 210 Success, But No Data. | 执行成功但无返回数据 |
| 211 Waiting. | 请求处于等待处理状态 |
| 401 Unauthorized. | 未授权访问(权限验证失败) |
| 406 Parameter Error. | 参数错误(参数缺失/格式错误,如 map 解析失败) |
| 411 Mapping Error. | 绑定关系错误(同步的 UID 无有效记录) |
| 412 APPID Error. | APPID 配置错误/不存在 |
| 422 White Block. | 白名单限制(当前版本已跳过白名单比对) |
| 520 Message Did Not Be Send. | 第三方推送服务器回复 Fail(同步指令发送失败) |
