记一次用户反馈app在后台收不到push问题跟踪

        我们的应该大范围推广后,今日用户群好多用户反馈安卓手机app在后台时收不到app的push消息,只有app处于前台时才能收到push消息。但是ios手机可以正常接收push消息。

        拿到问题,首先想到从下面几个方便尝试定位:

1.用户手机app通知权限配置是否正确;
2.实际触发push,然后看看安卓手机app在前台、后台是否能收到消息;
3.会不会是某些场景的push后台没下发;

1、app通知权限配置

        这里粘贴小米和oppo的app消息通知权限配置:

2.app处于后台接收消息 

        验证了我们的app处于后台,是能收到push消息的。

3、业务操作,后台是否下发push

        执行业务操作,push下发正常,安卓app也能收到push消息。

4、思考

        尝试了上面三个方式都没有复现用户的问题。麻了,真的不知道什么原因导致用户收不到push了。继续发散思考:

1.会不会是网络原因导致收不到?
2.会不会因为app应用停留在后台太长时间,因为一些不清楚的原因收不到push?
3.其他

 5.解决方案

        后面跟公司内其他团队的开发同学了解到,安卓系统原因,app退出前台,返回到后台超过1分钟或处于锁屏状态,就收不到push消息了。经过实际验证,的确是这样子。

        要想解决这个问题,只能是让我们的app接入厂商push

        

### 安卓应用后台无法接收消息通知的原因分析 在安卓设备上,部分应用程序可能面临后台无法正常接收到消息通知的情况。这主要是由于操作系统为了节省电量和优化性能而实施的一系列省电机制所致[^1]。 许多手机制造商针对自家产品定制了额外的安全策略和服务管理措施,例如将某些常用社交软件如微信、QQ等加入到系统的白名单中,允许它们即使是在屏幕关闭的情况下也能保持活跃并接收新消息。然而,其他未被列入此列表的应用则会被限制其后台活动权限,从而影响到了消息传递功能的正常使用。 ### 解决方案概述 #### 使用前台Service处理MQTT消息 对于需要实现实时通信的应用程序来说,采用前台 `Service` 是一种有效的方法来确保即便是在后台也能够持续监听网络连接以及及时响应新的数据包到来。通过创建一个带有永久性通知的服务实例,可以让它一直存在于内存之中直到被显式停止为止;与此同时还能向用户提供透明度较高的反馈信息表明当前有重要的进程正在执行当中[^3]。 ```java public class MyForegroundService extends Service { private static final int NOTIFICATION_ID = 1; @Override public void onCreate() { super.onCreate(); Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID) .setContentTitle("App is running in background") .setSmallIcon(R.drawable.ic_notification).build(); startForeground(NOTIFICATION_ID, notification); } } ``` #### 整合第三方推送服务 考虑到不同品牌终端之间存在的差异性和复杂性,在实际开发过程中还可以考虑集成由各大厂商所提供的官方推送渠道(比如小米Push、华为HiPush等等)。这类平台不仅提供了稳定可靠的消息下发能力而且还具备良好的兼容特性,能够在不依赖于自身业务逻辑的前提下完成远程唤醒目标客户端的任务。当涉及到语音/视频呼叫场景时,则建议优先选用“通知栏推送”的形式以便获得更好的用户体验效果[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值