1. Android SDK 完整接入


1.1. 功能列表


信鸽SDK主要提供以下功能:

(1)注册信鸽服务

启动&注册

账号绑定的注册(推荐有帐号体系的业务使用)

反注册

(2)通知与消息

接收通知

接收消息

(3)标签(Tag)

设置标签

删除标签

(4)结果反馈

注册结果

反注册结果

添加/删除标签结果

通知点击

(5)效果统计

通知推送效果

通知点击效果

消息推送效果

(6)自定义通知样式

(7)信鸽服务的设置API

debug模式

AccessID设置

AccessKey设置

1.2. API接口


1.2.1. 接口概览


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

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

XGPushManager功能类

XGPushManager提供信鸽服务的对外API列表,方法默认为public static类型。

原型
功能
void registerPush(Context context)void registerPush(Context context, final XGIOperateCallback callback)
启动并注册APP
void registerPush(Context context, String account)void registerPush(Context context, String account, final XGIOperateCallback callback)
启动并注册APP,同时绑定账号(推荐有帐号体系的APP使用
void registerPush(Context context,String account, String ticket, int ticketType, String qua, final XGIOperateCallback callback)
同上,仅供带登陆态的业务使用
void unregisterPush(Context context)
反注册,建议在不需要接收推送的时候调用
void setTag(Context context,String tagName)
设置标签
void deleteTag(Context context,String tagName)
删除标签
XGPushClickedResult onActivityStarted(Activity activity)
Activity被打开的效果统计;获取下发的自定义key-value
void onActivityStoped(Activity activity)
Activity被打开的效果统计
void setPushNotificationBuilder(Context context, int notificationBulderId, XGPushNotificationBuilder notificationBuilder)
自定义本地通知样式
long addLocalNotification(Context context, XGLocalMessage msg)
本地通知

XGPushBaseReceiver广播类

XGPushBaseReceiver类提供透传消息的接收和操作结果的反馈,需要开发者继承本类,并重载相关的方法;

同时,还需要在AndroidManifest.xml静态注册(注意:如果是在代码动态注册,只有当前APP运行时才能收到消息)。

原型
功能
void enableDebug(Context context,boolean debugMode)
是否开启debug模式,即输出logcat日志重要:为保证数据的安全性,发布前必须设置为false
boolean setAccessId(Context context,long accessId)
配置accessId
boolean setAccessKey(Context context,String accessKey)
配置accessKey
String getToken(Context context)
获取设备的token,只有注册成功才能获取到正常的结果

1.2.2. 启动与注册


APP只有在完成信鸽的启动与注册后才可以信鸽SDK提供push服务,在这之前请确保配置AccessId和AccessKey。

新版的SDK已经将启动信鸽和APP注册统一集成在注册接口中,即只需调用注册接口便默认完成启动和注册操作。

注册成功后,会返回设备token,token用于标识设备唯一性,同时也是信鸽维持与后台连接的唯一身份标识。关于如何获取token请参考“获取token”章节。

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

绑定设备注册


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

注意:这种注册方式,不支持推送帐号。

(1)原型

public static void registerPush(Context context)

(2)参数

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

(3)示例

XGPushManager.registerPush(this);

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

(1)原型

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

(2)参数

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

callback:callback调用,主要包括操作成功和失败的回调,不能为null

(3)示例

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

绑定账号注册


绑定账号注册指的是,在绑定设备注册的基础上,使用指定的账号(一个账号可能在多个设备登陆)注册APP,这样可以通过后台向指定的账号发送推送消息,有2个版本的API接口。

注意:这里的帐号可以是邮箱、QQ号、手机号、用户名等任意类别的业务帐号。目前一个帐号可以绑定最多15个设备token,超限后最新的会随机顶掉之前绑定的一个。

(1)原型

public static void registerPush(Context context, String account)

(2)参数

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

account:绑定的账号,绑定后可以针对账号发送推送消息。

如果要按别名推送,那就需要开发者在调用注册接口时把别名设置在注册请求里面的account字段,一台设备只允许有一个帐号别名,但一个别名下可以有最多15台设备,不能为null

(3)示例

XGPushManager.registerPush(this, "UserAccount")

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

(1)原型

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

(2)参数

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

account:绑定的账号,绑定后可以针对账号发送推送消息。

如果要按别名推送,那就需要开发者在调用注册接口时把别名设置在注册请求里面的account字段,一台设备只允许有一个别名,但一个别名下可以有最多15台设备,不能为null

callback:callback调用,主要包括操作成功和失败的回调,不能为null

(3)示例

XGPushManager.registerPush(this, "UserAccount",
        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);
            }
        });

账号解绑


若APP调用registerPush(context, account)等绑定account账号,需要解绑(如用户退出),可以调用以下方法。

调用

registerPush(context, "*")或registerPush(context, "*", xGIOperateCallback )

即设置account="*"即为解除之前的账号绑定

注意

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

带登陆态的注册


考虑到用户的登陆态问题,比如手机QQ或QZone业务场景,我们提供了带登陆态的注册接口,方便适用该类业务的使用。

(1)原型

public static void registerPush(Context context, String account,
            String ticket, int ticketType, String qua,
            final XGIOperateCallback callback)



***(2)参数 ***


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

callback:操作回调,主要包括操作成功和失败的回调,不能为null

account:绑定的账号,绑定后可以针对账号发送推送消息。

如果要按别名推送,那就需要开发者在调用注册接口时把别名设置在注册请求里面的account字段,一台设备只允许有一个别名,但一个别名下可以有15台设备,不能为null

ticket:登陆态票据,不能为null

ticketType:票据类型

qua:QZone专用字段,不需要时可填null

***(3)示例**

```java
XGPushManager.registerPush(this, "UserAccount", "ticket", 1, null,
        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种途径可以获取注册是否成功。

(1) 使用callback版本的注册接口

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

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

(2)重载XGPushBaseReceiver

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

(注意:重载的XGPushBaseReceiver需要配置在AndroidManifest.xml,请参考“消息配置”章节的相关内容)

示例

/**
 * 注册结果
 *
 * @param context
 *            APP上下文对象
 * @param errorCode
 *            错误码,{@link XGPushBaseReceiver#SUCCESS}表示成功,其它表示失败
 * @param registerMessage
 *            注册结果返回
 */

其中,XGPushRegisterResult提供的方法列表:

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

1.2.3. 反注册


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

(1)原型

public static void unregisterPush(Context context)

(2)参数

context: APP的上下文对象。

(3)示例

XGPushManager.unregisterPush(this);

反注册结果

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

示例

<pre class="brush:cpp;">/**
 * 反注册结果
 *
 * @param context
 *            APP上下文对象
 * @param errorCode
 *            错误码,{@link XGPushBaseReceiver#SUCCESS}表示成功,其它表示失败
 */
@Override
public void onUnregisterResult(Context context, int errorCode) {

}
</pre>

注意

反注册操作切勿过于频繁,可能会造成后台同步延时。

切换帐号无需反注册,多次注册自动会以最后一次为准。

1.2.4. 通知和消息


信鸽推送服务主要提供2种推送格式: “推送通知” 和 “透传消息命令”,二者存在一定的区别。

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

指的是在设备的通知栏展示的内容,由信鸽SDK完成所有的操作,APP可以监听通知被打开的行为,也就是说在前台下发的通知不需要APP做任何处理,默认会展示在通知栏。

成功注册信鸽服务后,通常不需要任何设置便可下发通知。

通常来说,结合自定义通知样式,常规的通知能够满足大部分业务需求,如果需要更灵活的方式请考虑使用消息。

(2)透传消息命令(可自定义展示任意位置)

指的是由信鸽下发给APP的内容,需要APP继承XGPushBaseReceiver接口实现并自主处理所有操作过程,也就是说,下发的消息默认是不会展示在通知栏的,信鸽只负责将消息从信鸽服务器下发到APP这个过程,不负责消息的处理逻辑,需要APP自己实现。具体可参考Demo中的CustomPushReceiver。

消息指的是由开发者通过前台或后台脚本下发的文本消息,信鸽只负责将消息传递给APP,APP完全自主负责消息体的处理。

消息具有灵活性强和高度定制性特点,因此更适合APP自主处理个性化业务需求,比如下发APP配置信息、自定义处理消息的存储和展示等。

例如:某游戏需要针对不同情景(用户升级提示、版本更新提示、活动营销提示等)提供不同的通知,可以把这些情景以json格式封装在消息,下发到APP,然后APP根据这些场景提供不同的提示,满足个性化需求。

(3)消息配置

若要接收消息,需要配置消息接收Receiver,即在AndroidManifest.xml配置以下信息,其中android:name的值需要修改为APP自己实现的Receiver。

<!-- APP实现的Receiver,用于接收消息和结果反馈 -->
<!-- com.tencent.android.xgpushdemo.CustomPushReceiver需要改为自己的Receiver -->
<receiver android:name="com.tencent.xgpushdemo.CustomPushReceiver" >
<intent-filter>
<!-- 接收消息透传 -->
<action android:name="com.tencent.android.tpush.action.PUSH_MESSAGE" />
<!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
<action android:name="com.tencent.android.tpush.action.FEEDBACK" />
    </intent-filter>
</receiver>

(4)接收消息

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

同时,XGPushBaseReceiver还提供其它相关的接口,如通知被展示、被点击的结果反馈、注册/反注册结果反馈等,请参考“XGPushBaseReceiver”章节或demo。

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

原型

 ```java
 public void onTextMessage(Context context,
 XGPushTextMessage message)
  ```

参数

context:应用当前上下文

message:接收到消息结构体,其中XGPushTextMessage的方法列表如下:

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

1.2.5. 获取设备Token


Token是信鸽保持与后台长连接的唯一身份标识,是识别识别的唯一ID,只有设备注册成功后才能获取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)接口获取。

1.2.6. 获取通知


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

原型

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

参数

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

1.2.7. 效果统计


【2.30及以上版本】通知效果监听和自定义key-value

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

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

(1)原型

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

(2)参数

activity:当前activity上下文

(3)返回值

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

XGPushClickedResult类方法列表:

方法名 返回值 默认值 描述
getMsgId()
long
0
消息id
getTitle()
String
""
通知标题
getContent()
String
""
通知正文内容
getActivityName()
String
""
被打开的页面名称
getCustomContent()
String
""
自定义key-value,json字符串

同时,在Activity的onPause()调用以下方法

(1)原型

public static void onActivityStoped(Activity activity)

(2)参数

activity:当前activity上下文

(3)示例

@Override
    protected void onPause() {
        super.onPause();
        XGPushManager.onActivityStoped(this);
    }

1.2.8. 标签


预置标签

目前信鸽提供三类预置标签:

地理位置(省一级)

应用版本号

流失用户(3天or7天)

预置标签会在SDK内部自动上报。

设置标签

开发者可以针对不同的用户设置标签,然后在前台根据标签名群发通知。 一个应用最多有10000个tag, 每个token在一个应用下最多100个tag, tag中不准包含空格。

函数原型

public static void setTag(Context context, String tagName)

参数

context:Context对象

tagName:待设置的标签名称,不能为null或空。

处理结果

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

示例

XGPushManager.setTag(this, "male");

删除标签

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

函数原型

public static void deleteTag(Context context, String tagName)

参数

context:Context对象

tagName:待设置的标签名称,不能为null或空

处理结果

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

示例

XGPushManager.deleteTag (this, "male");

1.2.9. 配置接口


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

debug模式

(重要:为保证数据的安全性,请在发布时确保已关闭debug模式!!)

(1)函数原型

public static void enableDebug(Context context, boolean debugMode)

(2)参数

context:APP上下文对象

debugMode:默认为false。如果要开启debug日志,设为true

获取token

token(又称MID:Mobile ID)是一个设备的身份识别ID,由服务器根据设备属性随机产生并下发到本地,同一台设备下所有使用信鸽或MTA(腾讯移动分析)的APP获取的token都是相同的。

使用token的一个好处是可以消除山寨机设备ID重复带来的统计影响,提高精准度。

如果您恰好正在使用最新版本的MTA,通过MTA的StatConfig.getMid()接口获取到的mid跟本接口是一样的。

注意:第一次注册会产生token,之后一直存在手机里,不管以后注销注册操作,该token一直存在。在3.0及其以上版本,token 在卸载重装等情况下 可能会改变。

(1)函数原型

public static String getToken(Context context)

(2)参数

context:APP上下文对象

(3)返回值

成功时返回正常的token;失败时返回null或”0”

设置AccessID

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

(1)函数原型

public static boolean setAccessId(Context context, long accessId)

(2)参数

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

(3)返回值

true:成功

false:失败

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

设置AccessKey

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

(1)函数原型

public static boolean setAccessId(Context context, String accessKey)

(2)参数

Context对象

accessId:前台注册得到的accesskey

(3)返回值

true:成功

false:失败

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

results matching ""

    No results matching ""