本文档中账号功能、删除标签功能适用于 SDK 1.2.3.0 或更高版本,1.2.3.0 及之前版本请参见 接口文档。
所有 API 接口的包名路径前缀都是:com.tencent.android.tpush
,其中有以下几个重要的对外提供接口的类名,如下表所示:
类名 | 说明 |
---|---|
XGPushManager | Push 服务推送 |
XGPushConfig | Push 服务配置项接口 |
XGPushBaseReceiver | 接收消息和结果反馈的 Receiver,需要开发者在 AndroidManifest.xml 自主完成静态注册 |
注册接口通常提供简版和带 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)
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);
}
指的是在设备的通知栏展示的内容,由移动推送 SDK 完成所有的操作,App 可以监听通知被打开的行为,即在前台下发的通知,无需 App 做任何处理,默认会展示在通知栏。
说明:
- 成功注册移动推送服务后,通常不需要任何设置便可下发通知。
- 通常来说,结合自定义通知样式,常规的通知,能够满足大部分业务需求,如果需要更灵活的方式,请考虑使用消息。
移动推送 SDK 提供回调接口供开发者获取抵达的通知内容,可以通过重写XGPushBaseReceiver 的 onNotificationShowedResult(Context, XGPushShowedResult)
方法实现。其中,XGPushShowedResult 对象提供读取通知内容的接口。
注意:因部分厂商通道 SDK 未提供通知抵达回调方法,且当 App 进程未运行时,厂商通道的抵达回调方法无法触发。因此 SDK 内提供的回调接口
onNotificationShowedResult
仅支持移动推送自建通道下发通知抵达的监听,不支持厂商通道消息抵达的监听。
public abstract void onNotificationShowedResult(Context context,XGPushShowedResult notifiShowedRlt);
使用移动推送 SDK 默认已经统计通知/消息的抵达量、通知的点击和清除动作。SDK 提供回调接口供开发者监听通知点击事件,通过重写 XGPushBaseReceiver 的 onNotificationClickedResult(Context, XGPushClickedResult)
方法实现。
说明:
- 自 SDK 版本 v1.2.0.1 起,支持各厂商通道、移动推送自建通道下发的通知点击事件的监听。
- 请不要此回调接口内另外做页面跳转动作,SDK 会自动按照推送任务配置的跳转动作进行通知点击跳转。如需下发并获取推送自定义参数,推荐使用 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);
}
XGPushClickedResult
类成员方法列表:
方法名 | 返回值 | 默认值 | 描述 |
---|---|---|---|
getMsgId() | long | 0 | 消息 ID |
getTitle() | String | 无 | 通知标题 |
getContent() | String | 无 | 通知正文内容 |
getActionType() | String | 无 | 0 表示该通知被点击,2 表示该通知被清除 |
getPushChannel() | String | 100 | 被点击通知的所下发通道标识。 |
清除本 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及以上版本。
// 请将铃声文件放置在 Android 工程资源目录 raw 下,此处以文件 ring.mp3 为例
String uri = "android.resource://" + context.getPackageName() + "/" + R.raw.ring;
Uri soundUri = Uri.parse(uri);
XGPushManager.createNotificationChannel(context,"default_message", "默认通知", true, true, true, soundUri);
指的是由移动推送下发给 App 的内容,需要 App 继承 XGPushBaseReceiver 接口实现并自主处理所有操作过程,也就是说,下发的消息默认是不会展示在通知栏的,移动推送只负责将消息从移动推送服务器下发到 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)
方法名 | 返回值 | 默认值 | 描述 |
---|---|---|---|
getContent() | String | 无 | 消息正文内容,通常只需要下发本字段即可 |
getCustomContent() | String | 无 | 消息自定义 key-value |
getTitle() | String | 无 | 消息标题(从前台下发应用内消息字中的描述不属于标题) |
SDK 1.2.7.0 新增,设置是否允许应用内消息窗口的展示,例如在允许展示应用内消息窗口的 Activity 页面设置开启,在不允许展示的 Activity 页面设置关闭。
注意:应用内消息基于 Android WebView 框架进行展示,默认情况下,移动推送 SDK 提供的应用内消息展示 WebView 运行在 App 主进程中。自 Android 9 起,应用无法再让多个进程共享一个 WebView 数据目录,如果您的 App 必须在多个进程中使用 WebView 实例,则您必须先使用
WebView.setDataDirectorySuffix()
方法为每个进程指定唯一的数据目录后缀,否则可能引起程序崩溃。配置示例代码如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { // 自 Android 9 起,未非 app 主进程的 WebView 实例设置不同的 WebView 数据目录 String processName = getProcessName() if (processName != null && !processName.equals(context.getPackageName())) { WebView.setDataDirectorySuffix(processName) } }
参考文档:谷歌开发者 按进程分设基于网络的数据目录。
XGPushConfig.enableShowInMsg(Context context, boolean flag);
context:Context 对象。
flag:是否允许应用内消息展示,true:允许,false:不允许;默认值 false。
XGPushConfig.enableShowInMsg(context, true);
本地通知由用户自定义设置,保存在本地。当应用打开,移动推送 SDK 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)
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);
说明:
添加或更新手机号码。若原来没有绑定手机号码,则绑定;若原来有,则覆盖(SDK 1.2.5.0+)
说明:手机号格式为
+[国家或地区码][手机号]
,例如+8613711112222(其中前面有一个+号 ,86为国家或地区码,13711112222为手机号)。若绑定的手机号不带国家或地区码,则移动推送下发短信时自动增加+86的前缀;若带上国家或地区码,则按照指定的号码绑定。如需删除绑定的手机号,则需调用delAccountsByKeys
接口并设置accountTypeSet 为 1002
。
public static void upsertPhoneNumber(Context context, String phoneNumber, XGIOperateCallback 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 推送,仍然能收到通知/消息。
XGPushManager.delAccount(getApplicationContext(),"test");
对一个或多个账号类型的账号进行解绑。(SDK 1.2.3.0+)
public static void delAccounts(Context context, final Set<Integer> accountTypeSet, XGIOperateCallback 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());
以下为标签管理相关接口方法,若需了解调用时机及调用原理,可查看 标签相关流程。
目前移动推送平台提供的预设标签包括:App 版本,系统版本,省份,活跃信息,系统语言,SDK 版本,国家&地区,手机品牌,手机机型。预设标签会在 SDK 内部自动上报。
一次设置多个标签,会覆盖这个设备之前设置的标签。
开发者可以针对不同的用户设置标签,然后根据标签名群发通知。 一个应用最多有10000个 tag, 每个 Token 在一个应用下最多100个 tag,如需提高该限制,请联系 在线客服。每个自定义 tag 可绑定的设备 Token 数量无限制,tag 中不准包含空格。
public static void clearAndAppendTags(Context context, String operateName, Set<String> tags)
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:2
和 level:2
。:
号,例如 test:2 level
,则会删除这个设备的全部历史标签,再新增 test:2
和 level
标签。
说明:新增的 tags 中,
:
号为后台关键字,请根据具体的业务场景使用。
public static void appendTags(Context context, String operateName, Set<String> tags)
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)
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)
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)
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)
注意:
- 属性使用键值对传输,都只接受 string 字符串类型,非空串。
- 属性个数限制50个。
- 属性 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)
注意:
- 属性使用键值对传输,都只接受 string 字符串类型,非空串。
- 属性个数限制50个。
- 属性 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)
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);
设置属性(带回调),会覆盖这个设备之前设置的所有属性(即清理并设置)。
注意:
- 属性使用键值对传输,都只接受 string 字符串类型,非空串。
- 属性个数限制50个。
- 属性 key,value 长度都限制50个字符以内。
public static void clearAndAppendAttributes(Context context, String operateName, Map<String, String> attributes, XGIOperateCallback 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 类中,为了使配置及时生效,开发者需要保证配置接口在启动或注册移动推送之前被调用。
移动推送默认开启联合保活能力,若需要关闭联合保活能力,请在应用初始化的时候,例如 Application 或 LauncherActivity 的 onCreate 中调用如下接口,并传递 false。
XGPushConfig.enablePullUpOtherApp(Context context, boolean pullUp);
说明:1.2.6.0 起默认关闭联合保活功能,可不再调用此接口。
说明:若有以下日志打印,则表明联合保活功能已经关闭:I/TPNS: [ServiceUtil] disable pull up other app。
XGPushConfig.enablePullUpOtherApp(context, false); // 默认为 true: 开启保活
为保证数据的安全性,请在发布时确保已关闭 Debug 模式。
public static void enableDebug(Context context, boolean debugMode)
XGPushConfig.enableDebug(context, true); // 默认为 false: 不打开
Token 是移动推送保持与后台长连接的唯一身份标识,是 App 接收消息的唯一 ID,只有设备注册成功后才能获取 Token,获取方法如下。(移动推送的 Token 在应用卸载重新安装的时候有可能会变。)
带 XGIOperateCallback 的注册接口的 onSuccess(Object data, int flag) 方法中,参数 data 便是 Token,具体可参考注册接口的相关示例。
重写 XGPushBaseReceiver 的 onRegisterResult (Context context, int errorCode,XGPushRegisterResult registerMessage) 方法,通过参数 registerMessage 提供的 getToken 接口获取,具体请参见 获取注册结果 章节。
当设备一旦注册成功后,便会将 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 是厂商设备的身份识别 ID,由厂商下发到本地,同一 App 在不同设备上的 Token 不同。
public static String getOtherPushToken(Context context)
说明:需要注册成功之后才能调用,不然返回为 NULL。
context:App 上下文对象。
XGPushConfig.getOtherPushToken(context);
成功时返回正常的 Token;失败时返回 null 或0。
SDK 1.3.2.0 新增,当通知被点击打开时,可以在通知设置的目标页面内,通过此接口直接获取创建推送任务时配置的自定义参数(custom_content)内容;
详细使用方式参见 通知点击跳转。
public static String getCustomContentFromIntent(Context context, Intent intent)
随推送下发的自定义参数(custom_content)字符串
String customContent = XGPushManager.getCustomContentFromIntent(this, intent);
如果已在 AndroidManifest.xml 配置过,无需再次调用;如果二者都存在,则以本接口为准。
public static boolean setAccessId(Context context, long accessId)
long accessId = 0L; // 当前应用的 accessId
XGPushConfig.setAccessId(context, accessId);
说明:通过本接口设置的 accessId 会同时存储在文件中。
public static boolean setAccessKey(Context context, String accessKey)
String accessKey = ""; // 您应用的 accessKey
XGPushConfig.setAccessKey(context, accessKey);
说明:通过本接口设置的 accessKey 会同时存储在文件中。
public static void uploadLogFile(Context context, HttpRequestCallback httpRequestCallback)
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);
。
本页内容是否解决了您的问题?