我正在开发voip应用程序。我做了关于后台服务信令的所有逻辑。当用户存在应用程序时,我正在停止该服务。在这种情况下,我没有连接到服务器。当我处于这种状态时,服务器正在发送推送通知(FCM),我正在启动服务并为来电或消息创建通知。到目前为止,这一切都很好:)
我已经了解了Oreo对后台服务的限制,并意识到现在我需要在显示通知的同时在前台启动服务。然后我想查看环聊(谷歌)是如何做到这一点的,当然,当收到消息时,他们正在后台运行该服务。我错过了什么吗?
谢谢
答案 0 :(得分:2)
当用户存在应用程序时,我正在停止服务
如果这意味着只有当您的应用对用户可见时服务才会运行,那么流程和服务实际上就在前台,您不应该遇到任何系统查杀服务的问题:
如果满足以下任何条件,则视为应用程序位于前台:
- 无论活动是开始还是暂停,它都有可见的活动。
此外,接收高优先级的FCM消息会将您的应用程序置于临时白名单中进行后台处理,此时您将有足够的时间进行处理,或者您可以在收到FCM后始终启动前台服务 - 就像处理呼叫的服务一样,应该在运行时显示通知:
在某些情况下,后台应用会被放置在临时白名单上几分钟。虽然应用程序位于白名单中,但它可以无限制地启动服务,并允许其后台服务运行。当应用程序处理用户可见的任务时,应用程序将放置在白名单中,例如:
- 处理高优先级的Firebase云消息传递(FCM)消息。
您的应用设计 - 通过接收优先级FCM来处理来电,然后创建前台呼叫服务 - 似乎是合理的。
请参阅documentation,这些主题非常清楚。