简单的介绍信鸽接入的,
信鸽接入
�官方文档
接入按照官方文档来就好了,这里不是重点
接受推送消息
- APP已经打开的情况
1、Activity中监听点击事件
在需要监听到点击的Activity的onCreate中初始化对当前界面的监听,这里是直接接入和处理点击,根据后台的配置,可能会直接进入到某个页面,也就是会直接重新启动app或者直接跳到某个页面而不是在重启之后跳转
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 这里尽量在onCreate的靠前位置进行初始化
XGPushClickedResult clickedResult = XGPushManager.onActivityStarted(this);
if (clickedResult != null) {
// 这里MessageBean根据需要传递的自定义参数来定义就好
MessageBean messageBean = new Gson().fromJson(clickedResult.getCustomContent(), new TypeToken<MessageBean>() {
}.getType());
messageBean.setMsgId(clickedResult.getMsgId());
messageBean.setTitle(clickedResult.getTitle());
messageBean.setContent(clickedResult.getContent());
// 处理点击获取的推送消息
handlerPushMessage(messageBean);
}
}
2、判断是否进入了闪屏页
由于默认要重新打开APP,所以会再次从SplashActivity进入,如果不让它显示,那么需要去判断然后关闭SplashActivity
private void initXG() {
XGPushClickedResult clickedResult = XGPushManager.onActivityStarted(this);
if (clickedResult != null) {
MessageBean messageBean = new Gson().fromJson(clickedResult.getCustomContent(), new TypeToken<MessageBean>() {
}.getType());
messageBean.setMsgId(clickedResult.getMsgId());
messageBean.setTitle(clickedResult.getTitle());
messageBean.setContent(clickedResult.getContent());
handlerPushMessage(messageBean);
// 如果当前是splashactivity
if (this instanceof SplashActivity) {
// 如果SplashActivity在栈底,因为splash在每次启动后会被关闭所以isTaskRoot会为false,此时程序会打开Splash,就调用到finish关闭splash,如此就不会重新打开app了
if (isTaskRoot()) {
// 如果splashactivity在启动中, 也就是app不在活动的时候的点击事件
handleAppNotRunNotificationClick();
return;
}
// 如果splash不在activity的栈中那么关闭splashactivity(这个splashactivity是当app开启的时候点击了通知栏又打开的,这样就防止了app被重新进入splashactivity)
// 这里处理当app在运行时点击了app通知的事件
handleNotificationClick();
finish();
}
}
}
注意
-
测试的时候发生推送暂停
由于不停的进行发送推送进行测试,导致后面的时候发送全部直接进入到发送暂停,这是由于腾讯限制一个小时内的推送总量数了
img1 -
如果你在Activity中使用了静态的常量,并且做了拼接的操作,那么这个常量由于没有被释放,那么在点击通知后再次进入,拼接仍然会添加在这个常量的后面,所以尽量少使用常量,并且在拼接的额时候尽量使用临时的字符串,不要让静态的自负床常量变动
-
在点击后Activity进行跳转的过程中如果Activity的背景没有设置为透明,那么在跳转的时候会出现黑屏的现象,并且如果被进入的Activity包含了动画,这个黑屏的时间会比较长,所以要在Activity的theme中设置它的背景为透明
网友评论