接口文档

最后更新时间:2021-08-16 11:20:03

    说明

    本文档中账号功能、删除标签功能适用于 SDK 1.2.3.0 或更高版本,1.2.3.0 及之前版本请参见 接口文档

    所有 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 的上下文对象。

    示例代码

    XGPushManager.unregisterPush(getApplicationContext(), new XGIOperateCallback() {
      @Override
      public void onSuccess(Object data, int i) {
          Log.d("TPush", "反注册成功");
      }
       @Override
      public void onFail(Object data, int errCode, String msg) {
          Log.d("TPush", "反注册失败,错误码:" + errCode + ",错误信息:" + msg);
      }
    });
    

    获取反注册结果

    可通过重载 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 对象提供读取通知内容的接口。

    注意:

    因厂商通道 SDK 提供的回调能力限制,通知抵达的回调接口 onNotificationShowedResult 暂不支持各厂商通道下发通知抵达的监听,仅支持 TPNS 通道下发通知抵达的监听。

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

    参数说明

    • context:当前应用上下文。
    • notifiShowedRlt: 抵达的通知对象。

    获取通知点击结果

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

    使用移动推送 TPNS SDK 默认已经统计通知/消息的抵达量、通知的点击和清除动作。SDK 提供回调接口供开发者监听通知点击事件,通过重载 XGPushBaseReceiver 的 onNotificationClickedResult(Context, XGPushClickedResult) 方法实现。

    说明:

    • 自 SDK 版本 v1.2.0.1 起,支持各厂商通道、TPNS 通道下发的通知点击事件的监听。
    • 如需下发并获取推送自定义参数,推荐使用 Intent 方式,请参考文档 通知点击跳转

    接口说明

    public abstract void onNotificationClickedResult(Context context, XGPushClickedResult notifiClickedRlt); 
    

    示例代码

    // 通知点击回调,actionType=0 为该消息被点击,actionType=2 为该消息被清除
    @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;
      }
    
      // APP自主处理的过程。
    
      Log.d(LogTag, "广播接收到通知:" + text);
    }
    

    参数说明

    • context:当前应用上下文。
    • XGPushClickedResult:被打开的通知对象。

    XGPushClickedResult 类成员方法列表:

    方法名 返回值 默认值 描述
    getMsgId() long 0 消息 ID
    getTitle() String 通知标题
    getContent() String 通知正文内容
    getActionType() String 0 表示该通知被点击,2 表示该通知被清除
    getPushChannel() String 100 被点击通知的所下发通道标识。
  • 100:TPNS 通道。
  • 101:FCM 通道。
  • 102:华为通道。
  • 103:小米通道。
  • 104:vivo 通道。
  • 105:OPPO 通道。
  • 106:魅族通道。
  • 清除所有通知

    接口说明

    清除本 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);
    

    账号管理

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

    添加账号

    接口说明

    添加或更新账号。若原来没有该类型账号,则添加;若原来有,则覆盖。可以同时添加多个账号,一个账号对应一个账号类型。

    public static void upsertAccounts(Context context, List<AccountInfo> accountInfoList, XGIOperateCallback callback)
    

    参数说明

    • context: Context 对象。
    • accountInfoList: 账号列表:账号信息包含一个账号类型和账号名称。
    • callback: 绑定账号操作的回调。

    示例代码

    XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
      @Override
      public void onSuccess(Object data, int flag) {
          Log.i("TPush", "onSuccess, data:" + data + ", flag:" + flag);
      }
       @Override
      public void onFail(Object data, int errCode, String msg) {
          Log.w("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
      }
    };
    List<XGPushManager.AccountInfo> accountInfoList = new ArrayList<>();
    accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.UNKNOWN.getValue(), "account-test"));
    XGPushManager.upsertAccounts(context, accountInfoList, xgiOperateCallback);
    
    说明:

    • 每个账号最多支持绑定100个 token。
    • 账号可以是邮箱、QQ 号、手机号、用户名等任意类别的业务账号,账号类型取值可参考 账号类型取值表
    • TPNS 控制台「账号推送」仅支持账号类型取值为0的账号 ID,其他类型的账号 ID 可通过 REST API 进行推送。
    • 同一个账号绑定多个设备时,后台将默认推送消息到最后绑定的设备,如需推送所有绑定的设备可查看 Rest API 文档中 account_push_type 参数设置。

    添加手机号

    接口说明

    添加或更新手机号码。若原来没有绑定手机号码,则绑定;若原来有,则覆盖(SDK 1.2.5.0+)

    说明:

    手机号格式为 +[国家或地区码][手机号],例如+8613711112222(其中前面有一个+号 ,86为国家或地区码,13711112222为手机号)。若绑定的手机号不带国家或地区码,则 TPNS 下发短信时自动增加+86的前缀;若带上国家或地区码,则按照指定的号码绑定。如需删除绑定的手机号,则需调用 delAccountsByKeys接口并设置 accountTypeSet 为 1002

    public static void upsertPhoneNumber(Context context, String phoneNumber, XGIOperateCallback callback) 
    

    参数说明

    • context: Context 对象。
    • phoneNumber:phoneNumber E.164标准,格式为+[国家或地区码][手机号],例如+8613711112222。SDK 内部加密传输。
    • callback: 绑定手机号操作的回调。

    示例代码

    XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
    @Override
    public void onSuccess(Object data, int flag) {
        Log.i("TPush", "onSuccess, data:" + data + ", flag:" + flag);
    }
     @Override
    public void onFail(Object data, int errCode, String msg) {
        Log.w("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
    }
    };
    XGPushManager.upsertPhoneNumber(context, phoneNumber, xgiOperateCallback);
    

    账号解绑

    接口说明

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

    //解绑指定账号(有注册回调)
    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.3.0+)

    public static void delAccounts(Context context, final Set<Integer> accountTypeSet, XGIOperateCallback callback)
    

    参数说明

    • context: Context 对象。
    • accountTypeSet: 需解绑账号的账号类型。
    • callback: 账号解绑操作的回调。

    示例代码

    XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
      @Override
      public void onSuccess(Object data, int flag) {
          Log.i("TPush", "onSuccess, data:" + data + ", flag:" + flag);
      }
       @Override
      public void onFail(Object data, int errCode, String msg) {
          Log.w("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
      }
    };
    
    Set<Integer> accountTypeSet = new HashSet<>();
    accountTypeSet.add(XGPushManager.AccountType.CUSTOM.getValue());
    accountTypeSet.add(XGPushManager.AccountType.IMEI.getValue());
    XGPushManager.delAccounts(context, accountTypeSet, xgiOperateCallback);
    

    清空所有账号

    说明:

    SDK 1.2.2.0 版本废弃 delAllAccount 接口,推荐使用 clearAccounts 接口。

    接口说明

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

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

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

    参数说明

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

    示例代码

    XGPushManager.clearAccounts(getApplicationContext());
    

    标签管理

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

    预设标签

    目前 TPNS 平台提供的预设标签包括:App 版本,系统版本,省份,活跃信息,系统语言,SDK 版本,国家&地区,手机品牌,手机机型。预设标签会在 SDK 内部自动上报。

    覆盖多个标签

    接口说明

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

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

    参数说明

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

    处理结果

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

    示例代码

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

    新增多个标签

    说明:

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

    接口说明

    • 如果新覆盖的标签都带有 : 号,例如 test:2, level:2,则会删除这个设备已绑定的所有 test:*level:* 标签,再新增 test:2level:2
    • 如果新增的标签有部分不带 : 号,例如 test:2 level,则会删除这个设备的全部历史标签,再新增 test:2level 标签。
      说明:

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

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

    参数说明

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

    处理结果

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

    示例代码

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

    删除多个标签

    说明:

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

    接口说明

    一次删除多个标签。

    public static void delTags(Context context, String operateName, Set<String> tags, XGIOperateCallback callback) 
    

    参数说明

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

    处理结果

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

    示例代码

    XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
      @Override
      public void onSuccess(Object data, int flag) {
          Log.i("TPush", "onSuccess, data:" + data + ", flag:" + flag);
      }
       @Override
      public void onFail(Object data, int errCode, String msg) {
          Log.w("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
      }
    };
    
    Set<String> tagSet = new HashSet<>();
    tagSet.add("tag1");
    tagSet.add("tag2");
    XGPushManager.delTags(context, "delTags", tagSet, xgiOperateCallback);
    

    清除所有标签

    说明:

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

    接口说明

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

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

    参数说明

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

    处理结果

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

    示例代码

    XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
      @Override
      public void onSuccess(Object data, int flag) {
          Log.i("TPush", "onSuccess, data:" + data + ", flag:" + flag);
      }
       @Override
      public void onFail(Object data, int errCode, String msg) {
          Log.w("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
      }
    };
    
    XGPushManager.clearTags(context, "clearTags", xgiOperateCallback);
    

    查询标签

    说明:

    查询设备关联的标签(此接口仅适用于1.2.5.0及以上版本)。

    接口说明

    获取这个设备的标签。

      public static void queryTags(final Context context, final String operateName, final int offset, final int limit, final XGIOperateCallback callback)
    

    参数说明

    • context:Context 对象
    • operateName:用户定义的操作名称,回调结果会原样返回,用于给用户区分是哪个操作
    • offset:开始的位置
    • limit:获取标签的数量,最多为100个
    • callback:获取标签操作的回调

    处理结果

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

    示例代码

    XGIOperateCallback xgiOperateCallback = new XGIOperateCallback() {
      @Override
      public void onSuccess(Object data, int flag) {
          Log.i("TPush", "onSuccess, data:" + data + ", flag:" + flag);
      }
       @Override
      public void onFail(Object data, int errCode, String msg) {
          Log.w("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
      }
    };
    XGPushManager.queryTags(context, 0, 100, xgiOperateCallback);
    

    用户属性管理

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

    新增用户属性

    接口说明

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

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

    参数说明

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

    1. 属性使用键值对传输,都只接受 string 字符串类型,非空串。
    2. 属性个数限制50个。
    3. 属性 key,value 长度都限制50个字符以内。

    示例代码

    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:删除属性操作的回调。
    注意:

    1. 属性使用键值对传输,都只接受 string 字符串类型,非空串。
    2. 属性个数限制50个。
    3. 属性 key,value 长度都限制50个字符以内。

    示例代码

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