一、移动推送 TPNS 简介
移动推送 TPNS 是一款专业的移动 APP 推送平台,支持百亿级的通知/消息推送,秒级触达用户,能够有效提升用户留存率、活跃度。TPNS 提供了全链路的移动推送能力,只需接入腾讯云 TPNS 的 SDK(3分钟即可完成接入,点击这里 查看教程),就可以立即将推送消息送达到用户的移动设备。
同时,移动推送 TPNS 还提供了操作便捷的网页端管理台,方便开发者进行推送消息管理,推送数据查看,推送调试。您只需要进行简单的配置,即可发送消息,并且实时观测数据。
为了帮助您灵活地定制推送相关业务逻辑,移动推送 TPNS 还提供了全面的终端和后台 API,通过这些 API,您可以实现个性化的触达等高级使用场景。
二、常用场景流程说明
官网链接: 常用场景流程说明
设备注册流程
设备反注册流程
账号相关流程
三、SDK 集成
1.接入前准备
创建 Android 平台产品 ( 前提条件:已注册腾讯云账号。)
官方链接: 创建产品和应用
- 登录 移动推送 TPNS 控制台,单击左侧菜单栏【产品管理】。
- 进入产品管理页面,单击【新增产品】。
- 进入新增产品页面,填写产品名称、产品详情、选择产品分类和服务接入点
- 勾选下方 Android、iOS、macOS 时,系统将默认为您创建该平台下的应用。
- 单击【确定】,即可完成产品新增
创建 Android 平台应用
- 登录 移动推送 TPNS 控制台,选择左侧菜单栏【产品管理】。
- 进入产品列表页面,选择已创建的产品,单击【新增应用】,勾选平台【Android】。
- 填写应用名称,单击【确定】即可完成应用创建。
完成以上步骤后,进入应用的【配置管理】页面,准备接入
2.前端集成和 SDK 文档
官网链接: AndroidStudio Gradle 自动集成(含手动集成,此处不做演示)
- 登录 移动推送 TPNS 控制台,在【产品管理】>【配置管理】页面获取应用的 AccessID、AccessKey。
- 在 SDK 下载 页面,获取当前最新版本号。
- 在 app build.gradle 文件下,配置以下内容:
android {
......
defaultConfig {
//控制台上注册的包名.注意application ID 和当前的应用包名以及控制台上注册应用的包名必须一致。
applicationId "您的包名"
......
ndk {
//根据需要 自行选择添加的对应cpu类型的.so库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
manifestPlaceholders = [
XG_ACCESS_ID : "注册应用的accessid",
XG_ACCESS_KEY : "注册应用的accesskey",
]
......
}
......
}
dependencies {
......
//添加以下依赖
implementation 'com.tencent.tpns:tpns:[VERSION]-release'
// TPNS 推送 [VERSION] 为最新 SDK 版本号,即为上述步骤2获取的版本号
}
- 调试
开启 Debug 日志数据,上线时请设置为 false。
XGPushConfig.enableDebug(this,true);
- Token 注册
XGPushManager.registerPush(this, new XGIOperateCallback() {
@Override
public void onSuccess(Object data, int flag) {
//token在设备卸载重装的时候有可能会变
Log.d("TPush", "注册成功,设备token为:" + data);
}
@Override
public void onFail(Object data, int errCode, String msg) {
Log.d("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg);
}
});
过滤 “TPush” 注册成功的日志如下:
TPNS register push success with token : 6ed8af8d7b18049d9fed116a9db9c71ab44d5565
- 接口文档以及使用说明
参考官网
3、Java后端集成和 API 文档
REST API 是移动推送 TPNS 提供给 App 后台的 HTTP 管理接口,供开发者远程调用推送服务。
REST API 支持 HTTP 和 HTTPS 协议,为了提高安全性,建议使用 HTTPS 协议。
官网链接: Api文档
SDK 说明
本 SDK 提供 TPNS 服务端接口的 Java 封装,与移动推送 TPNS 后台通信。使用时引用 XingeApp 包即可,本 SDK 封装的主要是 V3 推送相关接口。
集成方式
Maven 依赖引用方式:
<dependency>
<groupId>com.github.xingePush</groupId>
<artifactId>xinge</artifactId>
<version>1.2.4.2</version>
</dependency>
使用方法
XingeApp 接口说明
该类提供与 TPNS 后台交互的接口。由 XingeApp.Builder 进行构建,对应参数如下
参数名 | 类型 | 必需 | 默认值 | 参数描述 |
appId | String | 是 | 无 | 推送目标 AccessID,可在 产品管理 页面获取。 |
secretKey | String | 是 | 无 | 推送密钥,可在【产品管理】 -【应用配置】页面获取。 |
proxy | Proxy | 否 | Proxy.NO_PROXY | 如果需要设置代理可以设定该参数 |
connectTimeOut | Integer | 否 | 10s | 链接超时时间设置 |
readTimeOut | Integer | 否 | 10s | 请求超时时间设置 |
domainUrl | String | 否 | https://openapi.xg.qq.com/ | 请求接口服务域名地址,默认为请求信鸽平台的接口地址。使用时需要根据您产品的服务接入点选择 请求服务地址 |
示例
XingeApp xingeApp = new XingeApp.Builder()
.appId(appid)
.secretKey(secretKey)
.domainUrl(“https://api.tpns.tencent.com/”)
.build();
PushAppRequest pushAppRequest = new PushAppRequest();
//完善PushAppRequest 消息
...
JSONObject ret = xingeApp.pushApp(pushAppRequest );
pushAppRequest 接口说明
该类提供封装好的推送消息体,各参数说明及使用方法可参考 推送接口说明。
示例
Android 单设备推送示例
public JSONObject pushTokenAndroid() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.token);
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("title");
message.setContent("content");
pushAppRequest.setMessage(message);
MessageAndroid messageAndroid = new MessageAndroid();
message.setAndroid(messageAndroid);
ArrayList<String> tokenList = new ArrayList();
tokenList.add("04cac74a714f61bf089********63d880993");
pushAppRequest.setToken_list(tokenList);
return this.xingeApp.pushApp(pushAppRequest);
}
Android 单账号推送示例
public JSONObject pushAccountAndroid() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.account);
pushAppRequest.setPlatform(Platform.android);
pushAppRequest.setMessage_type(MessageType.notify);
pushAppRequest.setAccount_push_type(1);
Message message = new Message();
message.setTitle("title");
message.setContent("content");
MessageAndroid messageAndroid = new MessageAndroid();
message.setAndroid(messageAndroid);
pushAppRequest.setMessage(message);
ArrayList<String> accountList = new ArrayList();
accountList.add("123");
pushAppRequest.setAccount_list(accountList);
return this.xingeApp.pushApp(pushAppRequest);
}
Android 标签推送示例
public JSONObject pushTagAndroid() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.tag);
pushAppRequest.setPlatform(Platform.android);
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("title");
message.setContent("content");
MessageAndroid messageAndroid = new MessageAndroid();
message.setAndroid(messageAndroid);
pushAppRequest.setMessage(message);
ArrayList<String> tagList = new ArrayList();
tagList.add("tag");
TagListObject tagListObject = new TagListObject();
tagListObject.setTags(tagList);
tagListObject.setOp(OpType.OR);
pushAppRequest.setTag_list(tagListObject);
return this.xingeApp.pushApp(pushAppRequest);
}
Android 全部设备推送示例
public JSONObject pushAllAndroid() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.all);
pushAppRequest.setPlatform(Platform.android);
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("title");
message.setContent("content");
MessageAndroid messageAndroid = new MessageAndroid();
message.setAndroid(messageAndroid);
pushAppRequest.setMessage(message);
return this.xingeApp.pushApp(pushAppRequest);
}
推送应答示例
{"result":"{}","environment":"","push_id":"1328245138690125824","err_msg":"NO_ERROR","err_msg_zh":"","ret_code":0,"seq":0}