tencent cloud

Tencent Push Notification Service

Release Notes
Announcements
Features
SDK for Android
SDK for iOS
SDK for macOS
Product Introduction
Overview
Strengths
Use Cases
Global Deployment
Purchase Guide
Billing Overview
Purchase Directions
Billing Modes
Free Trial
Payment Overdue
Getting Started
Creating Products and Applications
Quick Integration with Android
Quick Integration with iOS
Creating a Push Task
Querying Push Records
Guidelines for Push Testing Methods
Product Restrictions
Operation Guide
Push Management
Advanced Push Features
Practical Tutorial
iOS Badge Feature Practice
API Documentation
Overview
API Overview
Call Method
Push APIs
Tag APIs
Account APIs
Statistics APIs
User Attribute APIs
Server-Side Error Codes
Server SDKs
API (Java)
SDK Documentation
Android Integration Guide
iOS Integration Guide
Client Integration Plugin
macOS Integration Guide
Users and Permissions
Quick Configuration
Advanced Custom Configuration
Resource Tag
Service Agreement
Service Level Agreement
FAQs
iOS
Android
Flutter
Others
Tencent Push Notification Service Policy
Privacy Policy
Data Processing and Security Agreement
Developer Agreement
Contact Us
Glossary

API (Java)

PDF
Focus Mode
Font Size
Last updated: 2024-01-17 14:26:44

SDK Description

This SDK is used to encapsulate the Tencent Push Notification Service server APIs and communicate with the Tencent Push Notification Service server. To use it, you only need to import the XingeApp package. This SDK mainly encapsulates push-related V3 APIs.

Integration Methods

Import Maven dependencies:
<dependency>
<groupId>io.github.tpnsPush</groupId>
<artifactId>xinge</artifactId>
<version>1.2.4.11</version>
</dependency>
Note:
There are groupId changes since version 1.2.4.11.

Usage

XingeApp API description

This class provides APIs for interaction with the Tencent Push Notification Service server, which is constructed by XingeApp.Builder with the following parameters:
Parameter
Type
Required
Default Value
Description
appId
String
Yes
Empty
Push target AccessID, which can be obtained on the Product Management page in the console.
secretKey
String
Yes
Empty
Push key, which can be obtained on the Product Management > Configuration Management > Basic Configuration page.
proxy
Proxy
No
Proxy.NO_PROXY
This parameter can be set if a proxy needs to be configured.
connectTimeOut
Integer
No
10s
Connection timeout period.
readTimeOut
Integer
No
10s
Request timeout period.
domainUrl
String
No
https://openapi.xg.qq.com/
API request service domain name address, which is the XG API address by default. Change the value to the service URL corresponding to your service access point.

Sample

XingeApp xingeApp = new XingeApp.Builder()
.appId(appid)
.secretKey(secretKey)
.domainUrl("https://api.tpns.tencent.com/")
.build();

PushAppRequest pushAppRequest = new PushAppRequest();
// Complete the `PushAppRequest` message
...
JSONObject ret = xingeApp.pushApp(pushAppRequest );

pushAppRequest API description

This class provides an encapsulated push message body. For the description and usage of parameters, please see Push API.

Samples

Note:
The XingeAppSimple class provides API examples related to message push, account binding and unbinding, etc.

Push to a single Android device

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);
}

Push to a single Android account

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);
}

Push to Android devices with specified tags

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);
}

Push to all Android devices

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);
}

Push to a single iOS device

public JSONObject pushTokenIos(){
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.token);
pushAppRequest.setEnvironment(Environment.valueOf("dev"));
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("title");
message.setContent("content");
MessageIOS messageIOS = new MessageIOS();
Alert alert = new Alert();
Aps aps = new Aps();
aps.setAlert(alert);
messageIOS.setAps(aps);
message.setIos(messageIOS);
pushAppRequest.setMessage(message);
ArrayList<String> tokenList = new ArrayList<String>();
tokenList.add("0250df875c93c55********536b54fc1c49f");
pushAppRequest.setToken_list(tokenList);
return this.xingeApp.pushApp(pushAppRequest);
}


Push to a single iOS account

public JSONObject pushAccountIos() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.account);
pushAppRequest.setEnvironment(Environment.valueOf("dev"));
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("Account push");
message.setContent("content");
MessageIOS messageIOS = new MessageIOS();
Alert alert = new Alert();
Aps aps = new Aps();
aps.setAlert(alert);
messageIOS.setAps(aps);
message.setIos(messageIOS);
pushAppRequest.setMessage(message);
ArrayList<String> accountList = new ArrayList();
accountList.add("1122");
pushAppRequest.setAccount_list(accountList);
return this.xingeApp.pushApp(pushAppRequest);
}


Push to iOS devices with specified tags

public JSONObject pushTagIos() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.tag);
pushAppRequest.setEnvironment(Environment.valueOf("dev"));
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("Tag push");
message.setContent("content");
MessageIOS messageIOS = new MessageIOS();
Alert alert = new Alert();
Aps aps = new Aps();
aps.setAlert(alert);
messageIOS.setAps(aps);
message.setIos(messageIOS);
pushAppRequest.setMessage(message);
ArrayList<String> tagList = new ArrayList();
tagList.add("1122");
TagListObject tagListObject = new TagListObject();
tagListObject.setTags(tagList);
tagListObject.setOp(OpType.OR);
pushAppRequest.setMessage(message);
pushAppRequest.setTag_list(tagListObject);
return this.xingeApp.pushApp(pushAppRequest);
}


Push to all iOS devices

public JSONObject pushAllIos() {
PushAppRequest pushAppRequest = new PushAppRequest();
pushAppRequest.setAudience_type(AudienceType.all);
pushAppRequest.setEnvironment(Environment.valueOf("dev"));
pushAppRequest.setMessage_type(MessageType.notify);
Message message = new Message();
message.setTitle("Full push");
message.setContent("content");
MessageIOS messageIOS = new MessageIOS();
Alert alert = new Alert();
Aps aps = new Aps();
aps.setAlert(alert);
messageIOS.setAps(aps);
message.setIos(messageIOS);
pushAppRequest.setMessage(message);
return this.xingeApp.pushApp(pushAppRequest);
}



Push response sample

{"result":"{}","environment":"","push_id":"1328245138690125824","err_msg":"NO_ERROR","err_msg_zh":"","ret_code":0,"seq":0}

Server Return Codes

For the meaning of ret_code, please see Server-Side Error Codes.

FAQs

What should I do if the error code 10101 or 403 is returned?

Check whether the application AccessID matches with SecretKey, and whether domainUrl corresponds to the service access point of the application.

What should I do if the API returns the error code 1008007 that indicates invalid parameters?

Refer to Push API and enter all the parameters correctly.

Are there SDKs in other programming languages?

You can find more server SDKs in other programming languages on the SDK Download page.

What should I do if the push API returns Peer certificate cannot be authenticated with given CA certificates?

This is because the CA certificate has expired. Enter the certificate directory and run the openssl command to view the expiration time:
# openssl x509 -in signed.crt -noout -dates
Replace signed.crt with the name of the certificate on your server.

Help and Support

Was this page helpful?

Help us improve! Rate your documentation experience in 5 mins.

Feedback