我有一个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不喜欢通知托盘始终显示在状态栏中,他希望保持清洁。
任何建议都将不胜感激!