我有一个Android应用程序,即时通讯是关键功能之一.为了实现IM功能,我们使用基于的推送服务器websocket
.
对于我的应用程序,我有一个PushService,在这项服务中,我建立了一个websocket
连接到推送服务器并接收推送消息的连接.
当应用程序在前台时(即:在用户使用应用程序时运行良好),代码效果很好,但是当应用程序不在前台时,它会在一段时间后停止接收推送消息(大约1分钟).用户关闭屏幕时出现同样的问题.
我已设置重复任务AlarmManager
,检查websocket
连接状态,如果它未处于连接状态,则重新尝试连接以恢复正常以接收推送消息.
这在Android M下运行良好,例如在Android 5手机上,它很少会错过推送消息.但是在Android M/Android N上,它的效果不如Android 5.x.我可以确认服务本身是否继续运行,请查看"正在运行的服务".
我注意到从Android M开始,Android引入了Doze和Standby模式,不确定它们是否相关,如果是,我该如何让应用程序继续工作?在我的手机上,微信和Skype Android应用程序运行良好,它背后的机制是什么?我知道FCM是最好的解决方案,但我不能将它用于中国的客户,所以我需要一个解决方法.
编辑:我曾建议使用前台服务,但PM不喜欢通知托盘始终显示在状态栏中,他希望保持清洁.
任何建议将被认真考虑!