尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动
📅 发布时间:2026/6/22 10:23:24

Android 安卓 困难处理记录 腾讯IM和厂商离线推送难题 点击离线推送无法唤醒APP启动页但某些Service服务和Application被启动

文章目录

      • 工程描述
      • 问题描述
      • 问题解决思路
        • 思路一(成立但难用)
        • 思路二(不成立)
        • 思路三(成立)


工程描述

时间 2025年09月16日
维护一个旧的安卓工程,项目中集成了腾讯IM、友盟、厂商通道离线推送等SDK。
项目之前腾讯IM的厂商通道集成方式是注册厂商推送通道相关APPID、Key等,填写在腾讯IM后台,然后前端注册厂商推送Token并上报给腾讯云,未集成腾讯IM push相关SDK,但集成了友盟的推送,以及厂商,现在修改成集成腾讯IM的push+离线厂商。


问题描述

当完成剔除友盟推送SDK以及友盟中集成厂商的SDK后,集成了腾讯IM push和腾讯IM的厂商SDK,然后申请了自定义消息分类,各个厂商离线推送都能够正常推送后,却发现离线推送点击怎么也调不起来APP启动页,但某些Service服务和Application正常被启动,IMSDK正常收到了一些不在线时的消息回调。


问题解决思路

共尝试了三种不同的解决方案,以供参考。

思路一(成立但难用)

还是以旧的继承方式,通过友盟注册推送Token,然后交给腾讯IM,达到离线推送效果。
由于是旧的工程,相关腾讯IM SDK旧的文档、友盟推送旧的文档已经完全找不到了,只能在工程内进行尝试性修改,虽然能够正常接收,唤醒APP,但是手动维护了很多厂商的Service,旧的工程中那时还没有SDK统一维护厂商Service,改起来相当繁琐且难懂,后期维护成本相对较高。

思路二(不成立)

既然IMSDK正常收到了一些不在线时的消息回调,是否可以在这个方法中启动一个新的Activity栈,从而来达到启动App的效果呢?
答案是,可以!但是效果不尽人意。
我在这个回调中添加了启动首页Activity,也判断了站内是否已经存在首页Activity、防止重复启动。但实际效果是启动起来了,但启动速度一言难尽。

思路三(成立)

既然前两种方法都不行,那就大改一番,方便更好的维护!继续解决启动不起来APP!
修改方式:去除友盟推送,去除相关厂商Services,升级腾讯IM SDK到最新版本,按最新集成方式来。

按照此时腾讯IM SDK最新离线推送文档集成确实很方便,SDK自己维护了启动类和相关Service,注册很方便,只有一个入口:

TIMPushManager.getInstance().registerPush(context, 您的 sdkAppId, "客户端密钥", new TIMPushCallback() {
@Override
public void onSuccess(Object data) {
}
@Override
public void onError(int errCode, String errMsg, Object data) {
}
});
//获取自定义的推送内容
TIMPushManager.getInstance().addPushListener(new TIMPushListener() {
@Override
public void onNotificationClicked(String ext) {
Log.d(TAG, "onNotificationClicked =" + ext);
// 获取 ext 自定义跳转
}
});

使用adb工具筛查,使用命令:

adb logcat | grep -E "Starting: Intent|cmp=com\.xxxx\.xxxxx"

发现启动的都是:

09-15 16:22:14.261 1574 2259 I ActivityTaskManager: START u0 {act=android.intent.action.VIEW flg=0x14000000 hwFlg=0x110 pkg=com.xxxx.xxxxxcmp=com.xxxx.xxxxx/com.tencent.qcloud.tim.push.TIMPushOpenActivity (has extras)
} from uid 10033
09-15 16:22:15.914 12371 12371 D imsdk : TIM: |-TIMPush-TIMPushOpenActivity |onCreateIntent { act=android.intent.action.VIEW dat=pushscheme://com.tencent.qcloud.uniapp/detail flg=0x14000000 hwFlg=0x100 pkg=com.xxxx.xxxxxcmp=com.xxxx.xxxxx/com.tencent.qcloud.tim.push.TIMPushOpenActivity clip={text/plain=1 T:anything
} (has extras)
}

已知TIMPushOpenActivity 是一个腾讯IM Push SDK中的跳板页面,经过尝试,在腾讯IM后台无论配置什么点击后续动作,最终都是走的TIMPushOpenActivity,且点击离线推送没有任何反应,可能是和旧的工程某些配置有关,此时我无法准确定位这个问题!

它的代码是这样的:

public class TIMPushOpenActivity
extends Activity {
private static final String a = TIMPushOpenActivity.class.
getSimpleName();
public TIMPushOpenActivity() {
}
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TIMPushLog.d(a, "onCreate" + ((Activity)this).getIntent());
TIMPushManagerImpl.c().a(((Activity)this).getIntent());
((Activity)this).finish();
}
}

那我就大概明白了,既然后台配置自己的不行,那就干脆后台全部配置成打开应用,拦截掉TIMPushOpenActivity 走自己自定义的启动页!

在AndroidManifest.xml中,使用如下代码:

<!--将TIMPushOpenActivity进行remove--><activityandroid:name="com.tencent.qcloud.tim.push.TIMPushOpenActivity"tools:node="remove"/><!--使用别名拦截使其跳转到自己的Activity--><activity-aliasandroid:name="com.tencent.qcloud.tim.push.TIMPushOpenActivity"android:exported="true"android:enabled="true"android:targetActivity="自己的启动页Activity" />

最终成功唤醒了App,然后在自己启动页中调用腾讯SDK方法中的这个方法,就能在注册onNotificationClicked方法中收到自定义参数:

TIMPushManagerImpl.c().a(((Activity)this).getIntent());

这是一个腾讯IM Push SDK中 TIMPushOpenActivity 类一个混淆的方法,就是把各个厂商离线推送点击唤醒后的参数整理然后交给onNotificationClicked回调的。官方文档上没有体现。

至此,完美解决!正常收到离线推送、点击直接唤醒App、正常接收离线推送参数做自定义动作!

相关新闻

  • redis-string类型常用命令
  • apache doris 和 clickhouse的区别
  • KEITHLEY 数字万用表 能测试电阻吗

最新新闻

  • MonkeyCode遗留系统改造:AI助力老代码现代化
  • 2026年 广东机器人钛制品厂家/钛配件/钛制品加工推荐榜:精密定制与创新工艺实力解析 - 品牌发掘
  • 2026年河南中小企业AI搜索推广与GEO优化服务商完全选型指南 - 优质企业观察收录
  • EVB51JM128评估板USB开发实战:从环境搭建到协议栈应用
  • 青岛同城头部繁育探店实测 朋博猫舍犬舍综合实力本地排名第一 - 同城宠物优选基地
  • EVBUSB2SER评估板:USB转串口硬件配置、驱动安装与通信调试全指南

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号