接口文档

最近更新时间:2021-01-13 15:25:41

所有 API 接口的包名路径前缀都是:com.tencent.android.tpush,其中有以下几个重要的对外提供接口的类名,如下表所示:

类名 说明
XGPushManager Push 服务推送
XGPushConfig Push 服务配置项接口
XGPushBaseReceiver 接收消息和结果反馈的 Receiver,需要开发者在 AndroidManifest.xml 自主完成静态注册

启动与注册

  • App 只有在完成移动推送 TPNS 的启动与注册后才可以移动推送 TPNS SDK 提供 Push 服务,在这之前请确保配置 AccessId 和 AccessKey。
  • 新版的 SDK 已经将启动移动推送 TPNS 和 App 注册统一集成在注册接口中,即只需调用注册接口便默认完成启动和注册操作。
  • 注册成功后,会返回设备 Token,Token 用于标识设备唯一性,同时也是移动推送 TPNS 维持与后台连接的唯一身份标识。关于如何获取 Token 请参考 获取 Token

注册接口通常提供简版和带 callback 版本的接口,请根据业务需要决定选择接口。

设备注册

以下为设备注册相关接口方法,若需了解调用时机及调用原理,可查看 设备注册流程

接口说明

普通注册只注册当前设备,后台能够针对不同的设备 Token 发送推送消息,以下有2个版本的 API 接口方法:

public static void registerPush(Context context)

参数说明

context:当前应用上下文对象,不能为 null。

示例代码

XGPushManager.registerPush(getApplicationContext());

接口说明

为方便用户获取注册是否成功的状态,提供带 callback 的版本。

public static void registerPush(Context context,final XGIOperateCallback callback)

参数说明

  • context:当前应用上下文对象,不能为 null。
  • callback:callback 调用,主要包括操作成功和失败的回调,不能为 null。

示例代码

XGPushManager.registerPush(this, new XGIOperateCallback() {
@Override
public void onSuccess(Object data, int flag) {
    Log.d("TPush", "注册成功,设备token为:" + data);
}
@Override
public void onFail(Object data, int errCode, String msg) {
    Log.d("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg);
}
})

获取注册结果

有2种途径可以获取注册是否成功。

使用 Callback 版本的注册接口
XGIOperateCallback 类提供注册成功或失败的处理接口,请参考注册接口里面的示例。

示例代码

/**
* 操作回调接口
*/
public interface XGIOperateCallback {
/**
* 操作成功时的回调。
* @param data 操作成功的业务数据,如注册成功时的token信息等。
* @param flag 标记码
*/
public void onSuccess(Object data, int flag);
/**
* 操作失败时的回调
* @param data 操作失败的业务数据
* @param errCode 错误码
* @param msg 错误信息
*/
public void onFail(Object data, int errCode, String msg);
}

重载 XGPushBaseReceiver
可通过重载 XGPushBaseReceiver 的 onRegisterResult 方法获取。

说明:

重载的 XGPushBaseReceiver 需要配置在 AndroidManifest.xml,请参考下文 消息配置

示例代码

/**
*
* @param context 当前上下文
* @param errorCode 0 为成功,其它为错误码
* @param message 注册结果返回
*/
@Override
public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult message) {
    if (context == null || message == null) {
        return;
    }
    String text = "";
    if (errorCode == XGPushBaseReceiver.SUCCESS) {       // 注册成功
    // 在这里拿token
    String token = message.getToken();
    text = "注册成功,token:" + token;
    } else {
    text = message + "注册失败,错误码:" + errorCode;
    }
    Log.d(LogTag, text);
}

类方法列表

方法名 返回值 默认值 描述
getToken() String 设备的 Token,即设备唯一识别 ID
getAccessId() long 0 获取注册的 AccessId
getAccount String 获取注册绑定的账号
getTicket() String 登录态票据
getTicketType() short 0 票据类型

反注册

以下为反注册接口方法,若需了解调用时机及调用原理,可查看 设备反注册流程

接口说明

当用户已退出或 App 被关闭,不再需要接收推送时,可以取消注册 App,即反注册(一旦设备反注册,直到这个设备重新注册成功期间内,下发的消息该设备都无法收到)。

public static void unregisterPush(Context context)

参数说明

context: App 的上下文对象。

示例代码

/**
* 反注册结果
* @param context 当前上下文
* @param errorCode  为成功,其它为错误码
*/
@Override
public void onUnregisterResult(Context context, int errorCode) {
    if (context == null) {
        return;
    }
    String text = "";
    if (errorCode == XGPushBaseReceiver.SUCCESS) {
        text = "反注册成功";
    } else {
        text = "反注册失败" + errorCode;
    }
    Log.d(LogTag, text);
}

获取反注册结果

可通过重载 XGPushBaseReceiver的onUnregisterResult 方法获取。

说明:

  • 反注册操作切勿过于频繁,可能会造成后台同步延时。
  • 切换账号无需反注册,多次注册自动会以最后一次为准。

示例代码

/**
* 反注册结果
* @param context 当前上下文
* @param errorCode  为成功,其它为错误码
*/
@Override
public void onUnregisterResult(Context context, int errorCode) {
if (context == null) {
          return;
 }
String text = "";
if (errorCode == XGPushBaseReceiver.SUCCESS) {
     text = "反注册成功";
} else {
     text = "反注册失败" + errorCode;
}
Log.d(LogTag, text);
}

推送通知(展现在通知栏)

指的是在设备的通知栏展示的内容,由移动推送 TPNS SDK 完成所有的操作,App 可以监听通知被打开的行为,即在前台下发的通知,无需 App 做任何处理,默认会展示在通知栏。

说明:

  • 成功注册移动推送 TPNS 服务后,通常不需要任何设置便可下发通知。
  • 通常来说,结合自定义通知样式,常规的通知,能够满足大部分业务需求,如果需要更灵活的方式,请考虑使用消息。

获取通知

接口说明

通知的下发和展示完全是由移动推送 TPNS SDK 控制的,但有的开发者需要在本地存储被展示过的通知内容,可以通过重载 XGPushBaseReceiver 的 onNotificationShowedResult(Context, XGPushShowedResult) 方法实现。其中,XGPushShowedResult 对象提供读取通知内容的接口。

public abstract void onNotificationShowedResult(Context context,XGPushShowedResult notifiShowedRlt); 

参数说明

  • context:当前应用上下文。
  • notifiShowedRlt: 被展示的通知对象。

获取通知点击结果

通知回调监听和自定义参数解析

使用移动推送 TPNS SDK 内置的 activity 展示页面,默认已经统计通知/消息的抵达量、通知的点击和清除动作。但如果开发者要监听这些事件,需要按照以下方法嵌入代码。

说明:

如果需要统计由移动推送 TPNS 推送引起的打开 App 操作或获取下发的自定义 key-value,需要开发者在所有(或被打开)的 Activity的onResume() 调用以下方法。

接口说明

onNotificationClickedResult(Context context, XGPushClickedResult notifiClickedRlt); 

示例代码

// 通知点击回调 actionType=1为该消息被清除,actionType=0为该消息被点击
@Override
public void onNotificationClickedResult(Context context,XGPushClickedResult message) {
if (context == null || message == null) {
    return;
}
String text = "";
if (message.getActionType() == NotificationAction.clicked.getType()) {
    // 通知在通知栏被点击
    // APP自己处理点击的相关动作
text = "通知被打开 :" + message;
} else if (message.getActionType() == NotificationAction.delete.getType()) {
    // 通知被清除
    // APP自己处理通知被清除后的相关动作
    text = "通知被清除 :" + message;
}
Toast.makeText(context, "广播接收到通知被点击:" + message.toString(),
Toast.LENGTH_SHORT).show();
// 获取自定义key-value
String customContent = message.getCustomContent();
if (customContent != null && customContent.length() != 0) {
try {
    JSONObject obj = new JSONObject(customContent);
    // key1为前台配置的key
    if (!obj.isNull("key")) {
    String value = obj.getString("key");
    Log.d(LogTag, "get custom value:" + value);
}
// ...
} catch (JSONException e) {
    e.printStackTrace();
}
}
// APP自主处理的过程。
Log.d(LogTag, text);
}

参数说明

activity:被打开 activity 上下文。

返回值

XGPushClickedResult:通知被打开的对象,如果该 activity 是由移动推送 TPNS 的通知引起打开动作的,返回XGPushClickedResult,否则返回 null。

类方法列表

方法名 返回值 默认值 描述
getMsgId() long 0 消息 ID
getTitle() String 通知标题
getContent() String 通知正文内容
getActivityName() String 被打开的页面名称
getCustomContent() String 自定义 key-value,JSON 字符串同时,在 Activity 的 onPause() 调用以下方法

通知删除

接口说明

清除通知栏上指定 id 的通知。

public static void cancelNotifaction(Context context, int id) 

参数说明

  • context:Context 对象。
  • id:需要清除的通知 id。

示例代码

XGPushManager.cancelNotifaction(context, 1);

清除所有通知

接口说明

清除本 App 在通知栏上的所有通知。

public static void cancelAllNotifaction(Context context) 

参数说明

  • context:Context 对象。

示例代码

XGPushManager.cancelAllNotifaction(context);

创建通知渠道

接口说明

开发者可以创建通知 channel。

public static void createNotificationChannel(Context context, String channelId, String channelName, boolean enableVibration, boolean enableLights, boolean enableSound, Uri soundUri)
说明:

此接口仅适用于1.1.5.4及以上版本。

参数说明

  • context:当前应用上下文。
  • channelId:通知渠道 Id。
  • channelName:通知渠道名称。
  • enableVibration:是否震动。
  • enableLights:是否有呼吸。
  • enableSound:是否有铃声。
  • soundUri :铃声资源 Uri,enableSound 为 true 才有效,若使用系统默认铃声,则设置为 null。

示例代码

XGPushManager.createNotificationChannel(this.getApplicationContext(),"default_message", "默认通知",true, true, true, null);

推送消息(消息不展示到通知栏)

指的是由移动推送 TPNS 下发给 App 的内容,需要 App 继承 XGPushBaseReceiver 接口实现并自主处理所有操作过程,也就是说,下发的消息默认是不会展示在通知栏的,移动推送 TPNS 只负责将消息从移动推送 TPNS 服务器下发到 App 这个过程,不负责消息的处理逻辑,需要 App 自己实现。

  • 消息指的是由开发者通过前台或后台脚本下发的文本消息,移动推送 TPNS 只负责将消息传递给 App,App 完全自主负责消息体的处理。
  • 消息具有灵活性强和高度定制性的特点,更适合 App 自主处理个性化业务需求,例如下发 App 配置信息、自定义处理消息的存储和展示等。

消息配置

请自行继承 XGPushBaseReceiver ,并且在配置文件中配置如下内容:

示例代码

<receiver android:name="com.tencent.android.xg.cloud.demo.MessageReceiver">
<intent-filter>
    <!-- 接收消息透传 -->
    <action android:name="com.tencent.android.xg.vip.action.PUSH_MESSAGE" />
    <!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
    <action android:name="com.tencent.android.xg.vip.action.FEEDBACK" />
</intent-filter>
</receiver>

获取应用内消息

开发者在前台下发消息,需要 App 继承 XGPushBaseReceiver 重载 onTextMessage 方法接收,成功接收后,再根据特有业务场景进行处理。

说明:

请确保在 AndroidManifest.xml 已经注册过该 receiver,即设 YOUR_PACKAGE.XGPushBaseReceiver。

public void onTextMessage(Context context,XGPushTextMessage message)

参数说明

  • context:应用当前上下文。
  • message:接收到消息结构体。

类方法列表

方法名 返回值 默认值 描述
getContent() String 消息正文内容,通常只需要下发本字段即可
getCustomContent() String 消息自定义 key-value
getTitle() String 消息标题(从前台下发应用内消息字中的描述不属于标题)

本地通知

增加本地通知

本地通知由用户自定义设置,保存在本地。当应用打开,移动推送 TPNS Service 会根据网络心跳,判断当前是否有通知(5分钟一次), 本地通知需要 Service 开启才能弹出,可能存在5分钟左右延时。(当设置的时间小于当前设备时间通知弹出)

示例代码

//新建本地通知
XGLocalMessage local_msg = new XGLocalMessage();
//设置本地消息类型,1:通知,2:消息
local_msg.setType(1);
// 设置消息标题
local_msg.setTitle("qq");
//设置消息内容
local_msg.setContent("ww");
//设置消息日期,格式为:20140502
local_msg.setDate("20140930");
//设置消息触发的小时(24小时制),例如:22代表晚上10点
local_msg.setHour("19");
//获取消息触发的分钟,例如:05代表05分
local_msg.setMin("31");
//设置消息样式,默认为0或不设置
local_msg.setBuilderId(0);
//设置动作类型:1打开activity或app本身,2打开浏览器,3打开Intent ,4通过包名打开应用
local_msg.setAction_type(1);
//设置拉起应用页面
local_msg.setActivity("com.qq.xgdemo.SettingActivity");
// 设置URL
local_msg.setUrl("http://www.baidu.com");
// 设置Intent
local_msg.setIntent("intent:10086#Intent;scheme=tel;action=android.intent.action.DIAL;S.key=value;end");
// 是否覆盖原先build_id的保存设置。1覆盖,0不覆盖
local_msg.setStyle_id(1);
// 设置音频资源
local_msg.setRing_raw("mm");
// 设置key,value
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("key", "v1");
map.put("key2", "v2");
local_msg.setCustomContent(map);
//添加通知到本地     
XGPushManager.addLocalNotification(context,local_msg);

清除本地通知

接口说明

清除本 App 已经创建但未弹出的本地通知。

public static void clearLocalNotifications(Context context) 

参数说明

  • context:Context 对象。

示例代码

XGPushManager.clearLocalNotifications(context);

账号管理

以下为账号管理相关接口方法,若需了解调用时机及调用原理,可查看 账号相关流程

绑定账号

接口说明

使用指定的账号注册 App,这样可以通过后台向指定的账号发送推送消息,以下有2个版本的 API 接口方法:

推荐有账号体系的 App 使用(此接口会覆盖设备之前绑定过的当前账号类型的所有账号,仅当前注册的账号生效)
void clearAndAppendAccount(Context context, String account, int accountType, XGIOperateCallback callback)
推荐有账号体系的App使用(此接口会覆盖设备之前绑定过的当前账号类型的所有账号,仅当前注册的账号生效,无注册回调)
void clearAndAppendAccount(Context context, final String account, int accountType)
说明:

  • 因“追加账号绑定接口(appendAccount)”使用率非常低,且容易被开发者误解,因此计划10月26日开始,追加账号接口停止使用。如您此前有使用该接口,该接口功能会变更为“覆盖账号(clearAndAppendAccount)”功能。
  • 每个账号最多支持绑定100个 token。
  • 账号可以是邮箱、QQ 号、手机号、用户名等任意类别的业务账号,账号类型取值可参考枚举类 XGPushManager.AccountType。
  • 同一个账号绑定多个设备时,后台将默认推送消息到最后绑定的设备,如需推送所有绑定的设备可查看 Rest API文档中 account_push_type 参数设置。
  • SDK 1.2.2.0 版本废弃 bindAccount 接口,推荐使用 clearAndAppendAccount 接口。

参数说明

  • context:当前应用上下文对象,不能为 null。
  • account:账号。
  • accountType:该账号的账号类别,账号类别可参考枚举类XGPushManager.AccountType。

示例代码

XGPushManager.clearAndAppendAccount(context, "1369999999", XGPushManager.AccountType.PHONE_NUMBER.getValue());

获取绑定结果

使用 Callback 版本的绑定接口。
XGIOperateCallback 类提供成功或失败的处理接口,请参考账号绑定接口说明。

示例代码:

public interface XGIOperateCallback {
    /**
    * 操作成功时的回调。
    * @param data 操作成功的业务数据,例如注册成功时的token信息等。
    * @param flag 标记码
    */
   public void onSuccess(Object data, int flag);


   /**
    * 操作失败时的回调
    * @param data 操作失败的业务数据
    * @param errCode 错误码
    * @param msg 错误信息
    */
   public void onFail(Object data, int errCode, String msg);
}

添加账号

接口说明

添加或更新账号。若原来没有该类型账号,则添加;若原来有,则覆盖。

若原来没有该类型账号,则添加;若原来有,则覆盖(无回调)
void upsertAccounts(Context context, final String account, int accountType)
若原来没有该类型账号,则添加;若原来有,则覆盖(带回调)
void upsertAccounts(Context context, String account, int accountType, XGIOperateCallback callback)
说明:

  • 账号可以是邮箱、QQ 号、手机号、用户名等任意类别的业务账号,账号类型取值可参考枚举类 XGPushManager.AccountType。
  • SDK 1.2.2.0 版本废弃 appendAccount 接口,推荐使用 upsertAccounts 接口。

参数说明

  • context:当前应用上下文对象,不能为 null。
  • account:账号。
  • accountType:该账号的账号类别,账号类别可参考枚举类XGPushManager.AccountType。

示例代码

XGPushManager.upsertAccounts(context, "1369999999", XGPushManager.AccountType.PHONE_NUMBER.getValue());

账号解绑

接口说明

对已绑定的账号进行解绑。

//解绑指定账号(有注册回调)
void delAccount(Context context, final String account, XGIOperateCallback callback)    
//解绑指定账号(无注册回调)
void delAccount(Context context, final String account )
说明:

账号解绑只是解除 Token 与 App 账号的关联,若使用全量/标签/Token 推送仍然能收到通知/消息。

参数说明

  • context:当前应用上下文对象,不能为 null。
  • account:账号。

示例代码

XGPushManager.delAccount(getApplicationContext(),"test");

账号类型解绑

接口说明

对一个或多个账号类型的账号进行解绑。(SDK 1.2.2.0+)

//通过账号类型解绑账号(有注册回调)
void delAccountsByKeys(Context context, final Set<Integer> accountTypeSet, XGIOperateCallback callback)
说明:

  • 账号解绑只是解除 Token 与 App 账号的关联,若使用全量/标签/Token 推送仍然能收到通知/消息。
  • SDK 1.2.2.0 版本新增。

参数说明

  • context:当前应用上下文对象,不能为 null。
  • accountTypeSet:账号类型集合,集合中元素取值范围为 XGPushManager.AccountType 中枚举值。

示例代码

Set<Integer> accountTypeSet = new HashSet<>();
accountTypeSet.add(AccountType.QQ);
accountTypeSet.add(AccountType.WECHAT);
XGPushManager.delAccountsByKeys(getApplicationContext(), accountTypeSet, callback);

清空所有账号

接口说明

对的所有已绑定账号进行解绑。

//解绑所有的账号信息(有注册回调)
void clearAccounts(Context context, XGIOperateCallback callback)
//解绑所有的账号信息(无注册回调)
void clearAccounts(Context context)
说明:

  • 账号解绑只是解除 Token 与 App 账号的关联,若使用全量/标签/Token 推送仍然能收到通知/消息。
  • SDK 1.2.2.0 版本废弃 delAllAccount 接口,推荐使用 clearAccounts 接口。

参数说明

  • context:当前应用上下文对象,不能为 null。

示例代码

XGPushManager.clearAccounts(getApplicationContext());

标签管理

以下为标签管理相关接口方法,若需了解调用时机及调用原理,可查看 标签相关流程

预置标签

目前移动推送 TPNS 提供两类预置标签:

  • 地理位置(省一级)。
  • 应用版本号。
  • 预置标签会在 SDK 内部自动上报。

设置自定义标签

接口说明

开发者可以针对不同的用户设置标签,然后在前台根据标签名群发通知。 一个应用最多有10000个 tag, 每个 Token 在一个应用下最多100个 tag,如需提高该限制,请 提交工单 与我们联系。每个自定义 tag 可绑定的设备 Token 数量无限制,tag 中不准包含空格。

public static void setTag(Context context, String tagName) 

参数说明

  • context:Context 对象。
  • tagName:待设置的标签名称,不能为 null 或空。

处理结果

可通过重载 XGPushBaseReceiver 的 onSetTagResult 方法获取。

示例代码

XGPushManager.setTag(this, "male"); 

设置多个标签

接口说明

一次设置多个标签,会覆盖这个设备之前设置的标签。

public static void clearAndAppendTags(Context context, String operateName, Set<String> tags) 
说明:

SDK 1.2.2.0 版本废弃 setTags 接口,推荐使用 clearAndAppendTags 接口

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于标识回调属于哪次操作。
  • tags:标签名集合,每个标签是一个 String。限制:每个 tag 不能超过40字节(超过会抛弃),不能包含空格(含有空格会删除空格)。最多设置100个 tag,超过部分会抛弃。

处理结果

可通过重载 XGPushBaseReceiver的onSetTagResult 方法获取。

示例代码

String[] tags = "tag1 tag2".split(" ");
Set<String> tagsSet = new HashSet<>(Arrays.asList(tags));
XGPushManager.clearAndAppendTags(getApplicationContext(), "clearAndAppendTags :" + System.currentTimeMillis(), tagsSet); 

增加多个标签

接口说明

一次设置多个标签,不会覆盖这个设备之前设置的标签。

  • 如果新增的标签的格式为 "test:2 level:2",则会删除这个设备的全部历史标签,再新增 test:2 和 level。
  • 如果新增的标签有部分不带:号,例如 "test:2 level",则会删除这个设备的全部历史标签,再新增 test:2 和 level 标签。
说明:

新增的 tags 中,:号为后台关键字,请根据具体的业务场景使用。

  • 此接口调用的时候需要间隔一段时间(建议大于5s),否则可能造成更新失败。
public static void appendTags(Context context, String operateName, Set<String> tags) 
说明:

SDK 1.2.2.0 版本废弃 addTags 接口,推荐使用 appendTags 接口

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于标识回调属于哪次操作。
  • tags:标签名集合,每个标签是一个 String。限制:每个 tag 不能超过40字节(超过会抛弃),不能包含空格(含有空格会删除空格)。最多设置100个 tag,超过部分会抛弃。

处理结果

可通过重载 XGPushBaseReceiver的onSetTagResult 方法获取。

示例代码

String[] tags = "tag1 tag2".split(" ");
Set<String> tagsSet = new HashSet<>(Arrays.asList(tags));
XGPushManager.appendTags(getApplicationContext(), "appendTags:" + System.currentTimeMillis(), tagsSet);

删除标签

接口说明

开发者删除用户标签数据。

public static void delTag(Context context, String tagName)
说明:

SDK 1.2.2.0 版本废弃 deleteTag 接口,推荐使用 delTag 接口

参数说明

  • context:Context 对象。
  • tagName:待设置的标签名称,不能为 null 或空。

处理结果

可通过重载 XGPushBaseReceiver的onDeleteTagResult 方法获取。

示例代码

XGPushManager.delTag (this, "male");

删除多个标签

接口说明

一次删除多个标签。

public static void delTags(Context context, String operateName, Set<String> tags)
说明:

SDK 1.2.2.0 版本废弃 deleteTags 接口,推荐使用 delTags 接口

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于标识回调属于哪次操作。
  • tags:标签名集合,每个标签是一个 String。限制:每个 tag 不能超过40字节(超过会抛弃),不能包含空格(含有空格会删除空格)。最多设置100个tag,超过部分会抛弃。

处理结果

可通过重载 XGPushBaseReceiver 的 onSetTagResult 方法获取。

示例代码

String[] tags = "tag1 tag2".split(" ");
Set<String> tagsSet = new HashSet<>(Arrays.asList(tags));
XGPushManager.delTags(getApplicationContext(), "delTags:" + System.currentTimeMillis(), tagsSet);

清除所有标签

接口说明

清除这个设备的所有标签。

public static void clearTags(Context context, String operateName)
说明:

SDK 1.2.2.0 版本废弃 cleanTags 接口,推荐使用 clearTags 接口

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于标识回调属于哪次操作。

处理结果

可通过重载 XGPushBaseReceiver 的 onSetTagResult 方法获取。

示例代码

XGPushManager.clearTags(getApplicationContext(), "clearTags:" + System.currentTimeMillis());

用户属性管理

开发者可以针对不同的用户设置属性,然后在管理平台推送的时候进行个性化推送。以下为用户属性相关接口方法,若需了解调用时机及调用原理,可查看 用户属性相关流程

新增用户属性

接口说明

添加属性(带回调):有则覆盖,无则添加。

public static void upsertAttributes(Context context, String operateName, Map<String, String> attributes, XGIOperateCallback callback)

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于给用户区分是哪个操作。
  • attributes:属性集合,每个属性通过 key-value 标识。
  • callback:添加属性操作的回调。

示例代码

XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
   @Override
   public void onSuccess(Object data, int flag) {
       log("action - onSuccess, data:" + data + ", flag:" + flag);
   }
    @Override
   public void onFail(Object data, int errCode, String msg) {
       log("action - onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
   }
};

Map<String,String> attr = new HashMap<>();
attr.put("name", "coding-test");
attr.put("gender", "male");
attr.put("age", "100");
XGPushManager.upsertAttributes(context, "addAttributes-test", attr, xgiOperateCallback);

删除用户属性

接口说明

删除指定的属性。

public static void delAttributes(Context context, String operateName, Set<String> attributes, XGIOperateCallback callback)

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于给用户区分是哪个操作。
  • attributes:属性集合,每个属性通过 key-value 标识。
  • callback:删除属性操作的回调。

示例代码

XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
   @Override
   public void onSuccess(Object data, int flag) {
       log("action - onSuccess, data:" + data + ", flag:" + flag);
   }
    @Override
   public void onFail(Object data, int errCode, String msg) {
       log("action - onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
   }
};
Set<String> stringSet = new HashSet<>();
stringSet.add("name");
stringSet.add("gender");

XGPushManager.delAttributes(context, "delAttributes-test", stringSet, xgiOperateCallback);

清空已有用户属性

接口说明

删除已设置的所有属性。

public static void clearAttributes(Context context, String operateName, XGIOperateCallback callback)

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于给用户区分是哪个操作。
  • callback:清理所有属性操作的回调。

示例代码

XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
   @Override
   public void onSuccess(Object data, int flag) {
       log("action - onSuccess, data:" + data + ", flag:" + flag);
   }
    @Override
   public void onFail(Object data, int errCode, String msg) {
       log("action - onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
   }
};

XGPushManager.clearAttributes(context, "cleanAttributes-test", xgiOperateCallback);

更新用户属性

接口说明

设置属性(带回调),会覆盖这个设备之前设置的所有属性(即清理并设置)。

注意:

  1. 属性使用键值对传输,都只接受 string 字符串类型,非空串。
  2. 属性个数限制50个。
  3. 属性 key,value 长度都限制50个字符以内。
public static void clearAndAppendAttributes(Context context, String operateName, Map<String, String> attributes, XGIOperateCallback callback)

参数说明

  • context:Context 对象。
  • operateName:用户定义的操作名称,回调结果会原样返回,用于给用户区分是哪个操作。
  • attributes:属性集合,每个属性通过 key-value 标识。
  • callback:设置属性操作的回调。

示例代码

XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
   @Override
   public void onSuccess(Object data, int flag) {
       log("action - onSuccess, data:" + data + ", flag:" + flag);
   }
    @Override
   public void onFail(Object data, int errCode, String msg) {
       log("action - onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
   }
};

Map<String,String> attr = new HashMap<>();
attr.put("name", "coding-test");
attr.put("gender", "male");
attr.put("age", "100");
XGPushManager.clearAndAppendAttributes(context, "setAttributes-test", attr, xgiOperateCallback);

配置接口

所有的配置相关接口在 XGPushConfig 类中,为了使配置及时生效,开发者需要保证配置接口在启动或注册移动推送 TPNS 之前被调用。

关闭联合保活能力(1.1.6.1+)

TPNS默认开启联合保活能力,若需要关闭联合保活能力,请在应用初始化的时候,例如 Application 或 LauncherActivity 的 onCreate 中调用如下接口,并传递 false。

XGPushConfig.enablePullUpOtherApp(Context context, boolean pullUp);

参数说明

  • context:应用上下文
  • pullUp:true(开启联合保活);false(关闭联合保活)
说明:

若有以下日志打印,则表明联合保活功能已经关闭:I/TPNS: [ServiceUtil] disable pull up other app。

示例代码

XGPushConfig.enablePullUpOtherApp(context, false); // 默认为 true: 开启保活

Debug 模式

接口说明

为保证数据的安全性,请在发布时确保已关闭 Debug 模式。

public static void enableDebug(Context context, boolean debugMode)

参数说明

  • context:App 上下文对象。
  • debugMode:默认为 false。如果要开启 Debug 日志,设为 true。

示例代码

XGPushConfig.enableDebug(context, true); // 默认为 false: 不打开

获取设备 Token

接口说明

Token 是移动推送 TPNS 保持与后台长连接的唯一身份标识,是 App 接收消息的唯一 ID,只有设备注册成功后才能获取 Token,获取方法如下。(移动推送 TPNS 的 Token 在应用卸载重新安装的时候有可能会变。)

1. 通过带 callback 的注册接口获取

带 XGIOperateCallback 的注册接口的 onSuccess(Object data, int flag) 方法中,参数 data 便是 Token,具体可参考注册接口的相关示例。

2. 重载 XGPushBaseReceiver

重载 XGPushBaseReceiver 的 onRegisterResult (Context context, int errorCode,XGPushRegisterResult registerMessage) 方法,通过参数 registerMessage 提供的 getToken 接口获取,具体请参见 获取注册结果 章节。

3. XGPushConfig.getToken(context)

当设备一旦注册成功后,便会将 Token 存储在本地,之后可通过 XGPushConfig.getToken(context) 接口获取。

Token 是一个设备的身份识别 ID,由服务器根据设备属性随机产生并下发到本地,同一 App 在不同设备上的 Token 不同。

public static String getToken(Context context)
说明:

App 第一次注册会产生 Token,之后一直存储在手机上,不论之后是否进行注销注册操作,该 Token 一直存在。当 App 完全卸载重装后,Token 会发生变化。不同 App 之间的 Token 不同。

参数说明

context:App 上下文对象。

示例代码

XGPushConfig.getToken(context);

返回值

成功时返回正常的 Token;失败时返回 null 或0。

获取第三方厂商 Token

接口说明

第三方厂商 Token 是厂商设备的身份识别 ID,由厂商下发到本地,同一 App 在不同设备上的 Token 不同。

public static String getOtherPushToken(Context context) 
说明:

需要注册成功之后才能调用,不然返回为 NULL。

参数说明

context:App 上下文对象。

示例代码

XGPushConfig.getOtherPushToken(context);

返回值

成功时返回正常的 Token;失败时返回 null 或0。

设置 AccessID

接口说明

如果已在 AndroidManifest.xml 配置过,无需再次调用;如果二者都存在,则以本接口为准。

public static boolean setAccessId(Context context, long accessId)

参数说明

  • Context:对象。
  • accessId:前台注册得到的 accessId。

示例代码

long accessId = 0L; // 当前应用的 accessId
XGPushConfig.setAccessId(context, accessId);

返回值

  • true:成功。
  • false:失败。
说明:

通过本接口设置的 accessId 会同时存储在文件中。

设置 AccessKey

接口说明

如果已在 AndroidManifest.xml 配置过,无需再次调用;如果二者都存在,则以本接口为准。

public static boolean setAccessKey(Context context, String accessKey) 

参数说明

  • Context:对象。
  • accessKey:前台注册得到的 accesskey。

示例代码

String accessKey = ""; // 您应用的 accessKey
XGPushConfig.setAccessKey(context, accessKey);

返回值

  • true:成功。
  • false:失败。
说明:

通过本接口设置的 accessKey 会同时存储在文件中。

新增日志上报接口

接口说明

开发者如果发现 TPush 相关功能异常,可以调用该接口,触发本地 Push 日志的上报,反馈问题时,请 提交工单 将文件地址给到我们,便于我们排查问题。

public static void uploadLogFile(Context context, HttpRequestCallback httpRequestCallback)

参数说明

  • context:Context 对象, 不能为 null。
  • httpRequestCallback: 上传日志结果回调,主要包括操作成功和失败,不能为 null。

示例代码

XGPushManager.uploadLogFile(context, new HttpRequestCallback() {
@Override
public void onSuccess(String result) {
         Log.d("TPush", "上传成功,文件地址:" + result);
}
    @Override
public void onFailure(int errCode, String errMsg) {
         Log.d("TPush", "上传失败,错误码:" + errCode + ",错误信息:" + errMsg);
}
});
说明:

首先需要开启 XGPushConfig.enableDebug(this, true);

目录