我在stackoverflow和Android文档上学到了什么.最后我得出结论:
无法为连续任务创建后台服务.如果我真的想要一个服务,我应该启动一个前台服务,用户不断看到一个持久的通知"应用程序正在运行".无法隐藏此通知.它是由谷歌有意添加的.是的,还有其他选项,如WorkManager和JobScheduler, 但它们确实定期不连续工作.
我想要的是构建一个即时消息应用程序,它使用xmpp或套接字连续连接到服务器.但它需要连续的连接,但我不想使用前台服务,因为它向用户显示一个恼人的通知"应用正在运行".
问题1: Whatsapp和其他即时消息应用程序如何持续连接到服务器但不显示持久通知?他们是如何做到这一点的?
问题2:如果Whatsapp使用FCM进行通知,那么它也适用于那些没有安装playservices的手机,那么Whatsapp通知机制如何运作?
从 Android 6.0(API 级别 23)开始,Android 引入了两项可延长用户电池寿命的省电功能:DOZE 和 APP STANDBY。当手机处于打盹模式时,这两项功能会对您的后台处理施加许多限制。您应该在以下链接中阅读有关 Doze 和应用待机的信息
https://developer.android.com/training/monitoring-device-state/doze-standby
现在,关于您的用例是,即使应用程序未运行,您也希望接收消息和来电。对于这个用例,Android在 GoogleIO2016 中宣布了高优先级 FCM 消息。它们是高优先级推送消息,授予应用程序临时唤醒锁和网络访问权限,独立于设备的 Doze 状态或应用程序是否恰好处于应用程序待机状态。这允许应用程序对消息做出反应,并以它想要的任何方式通知用户有关即时消息或来电的信息。
除非我查看他们的代码,否则我不知道 WhatsApp 是如何做到这一点的,但您可以使用 FCM 高优先级消息处理您的用例。有关您的用例的更多信息,请点击以下链接从 08:30 到 10:30 的 GoogleIO2016 视频
https://www.youtube.com/watch?v=VC2Hlb22mZM&t=505s
并在此答案的第一个链接上阅读有关此用例的信息。
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |