信鸽推送踩坑

简介: 最近项目中用到了信鸽推送,特来分享一些踩坑经验。目前信鸽的推送有2种设置方式,1是信鸽推荐的:在下发消息的时候设置点击消息要跳转的页面;2是在app里判断,再进行分发。

最近项目中用到了信鸽推送,特来分享一些踩坑经验。目前信鸽的推送有2种设置方式,1是信鸽推荐的:在下发消息的时候设置点击消息要跳转的页面;2是在app里判断,再进行分发。这里主要说说第2种。


Intent intent = newIntent(context,Ac_Balance.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);


就在我以为万事大吉的时候,神奇的事情发生了,跳转到指定界面后,紧接着又跳回首页了。

纳尼???

去翻了翻官方文档,文档里是这样说的:

由于目前sdk点击 消息默认会有点击事件,默认的点击事件是打开主界面。所以在终端点击消息回调onNotifactionClickedResult方法内,设置跳转操作,自定义的跳转和默认的点击事件造成冲突。反应情况是会跳转到指定界面过后再回到主界面。所以不能再onNotifactionClickedResult内设置跳转。

不过这难不倒我们万能的程序猿,百度大法加上一系列尝试,还是解决了这个奇葩的问题,代码如下。

思路是这样,点击通知栏统一跳转至开屏页,然后在开屏页做分发。

首先,拿到数据,跳转至开屏页


Intent intent = newIntent(context, Ac_Splash.class);

           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

           if(xgPushModel != null) {

               intent.putExtra("jump_type", xgPushModel.getJump_type());

           } else{

                intent.putExtra("jump_type", "");

           }

           context.startActivity(intent);


然后,需要判断是不是点击信鸽的推送消息进来的,请注意,这段代码要放在oncreate 方法中


XGPushClickedResult message = XGPushManager.onActivityStarted(this);

       if(message != null) {

             if(isTaskRoot()) {

               return;

           }

           // 如果有面板存在则关闭当前的面板

           finish();

       }


最后,是做分发。


switch(jump_type) {

           case"pay":

                        //我的OH币

                       intent.setClass(context, Ac_Balance.class);

                       break;

          case"index":

                       //首页

                       intent.setClass(context, Ac_Main.class);

                       break;

          case"invite_reward":

                       //邀请奖励

                       intent.setClass(context, Ac_Invite.class);

                       break;

           case"activity":

                       //活动消息

                       intent.setClass(context, Ac_Message.class);

                       break;

            default:

                       //平台消息

                       intent.setClass(context, Ac_Message.class);

                       intent.putExtra("index", 1);

                       break;

               }


你的认可,是我坚持更新博客的动力,如果觉得有用,就请点个赞,谢谢

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
安全 网络安全 数据安全/隐私保护
网站为何会显示“不安全”?又该怎么办呢?
这篇文章概述了导致网站显示为“不安全”的常见原因,并提供了相应的解释和建议。了解这些信息对于网站管理员和普通用户都是重要的,因为它有助于提高网络安全意识和保护个人信息不被泄露。
3320 0
|
自然语言处理 API 索引
ElasticSearch实战教程PostMan版(超级详细版)
ElasticSearch实战教程PostMan版(超级详细版)
ElasticSearch实战教程PostMan版(超级详细版)
|
存储 监控 算法
XXL-JOB内部机制大揭秘:让任务调度飞起来
【8月更文挑战第14天】在大数据时代,高效的任务调度系统是支撑业务稳定运行与快速迭代的基石。XXL-JOB,作为一款轻量级、分布式任务调度平台,凭借其灵活的配置、强大的扩展性和高可用特性,在众多任务调度框架中脱颖而出。今天,我们就来深入揭秘XXL-JOB的内部机制,看看它是如何让任务调度“飞起来”的。
698 0
|
安全 Java 容器
Java一分钟之-并发编程:并发容器(ConcurrentHashMap, CopyOnWriteArrayList)
【5月更文挑战第18天】本文探讨了Java并发编程中的`ConcurrentHashMap`和`CopyOnWriteArrayList`,两者为多线程数据共享提供高效、线程安全的解决方案。`ConcurrentHashMap`采用分段锁策略,而`CopyOnWriteArrayList`适合读多写少的场景。注意,`ConcurrentHashMap`的`forEach`需避免手动同步,且并发修改时可能导致`ConcurrentModificationException`。`CopyOnWriteArrayList`在写操作时会复制数组。理解和正确使用这些特性是优化并发性能的关键。
190 1
|
vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列2
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
|
网络协议 Linux 网络安全
【Linux】iptables之防火墙的应用及案例、策略、备份与还原(2)
实验环境:为网关、Web 服务器配置防火墙规则 需求描述: 1、为网站服务器编写入站规则
622 0
【Linux】iptables之防火墙的应用及案例、策略、备份与还原(2)
|
Rust 安全 Java
【RUST学习日记】第1课 Hello World
【RUST学习日记】第1课 Hello World
【RUST学习日记】第1课 Hello World
|
存储 前端开发 JavaScript
|
SQL Oracle 关系型数据库
Oracle SQL优化之多表连接
Oracle SQL优化之多表连接
729 0
Oracle SQL优化之多表连接