我正在开发一个用于学习的android聊天应用程序,该应用程序使用的是服务器-客户机架构。我自己用Java编写了服务器端(因为我正在学习),客户端是一个android应用程序。我正在使用TCP套接字进行通信。
当两个客户端打开并连接它们的应用程序时,一切都很好,但我希望客户端A仍然能够在客户端B没有打开应用程序的情况下向客户端B发送消息。
在做了一些研究之后,我意识到我需要使用,即安卓推送通知,这将允许我的服务器通过触发客户端的意图,与客户机( android应用程序)进行通信,即使应用程序没有打开或运行。我做了更多的研究,我发现每个教程都使用第三方服务作为中间人来实现这一点,比如Firebase Cloud消息传递,这违背了我试图通过自己做的事情来学习的目的。
因为我这样做是为了学习,所以我不想使用这些服务中的任何一个,比如Firebase消息传递,所以我想在不使用中间人的情况下,从我用java编写的服务器中触发意图。
这里的主要目标是在应用程序关闭时从我的服务器向android应用程序发送消息,而不使用任何第三方软件,比如Firebase消息传递。
我不知道如何做到这一点,如果有人能指出正确的方向,我将不胜感激。谢谢!
发布于 2018-09-03 08:08:32
除了sahand我想说的是,这样的服务应该最好地使用它自己的进程--在Manifest中使用android:process
,这样我就不会在主应用程序被终止时被杀死,还应该实现在使用许可<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
重新启动并构建一个接收器之后再次启动:
<receiver android:name="de.example.BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
但是,当然,这样一个非常粘稠的后台服务并不是一个非常好的架构,在电池和内存的使用设备。如果可能的话,最好选择使用任何现有的Android系统服务。
发布于 2018-09-03 07:52:39
我认为当应用程序处于后台时,您可以启动一个服务并打开一个套接字,然后开始侦听新消息,当收到新消息时,您可以使用android通知处理显示通知。
https://stackoverflow.com/questions/52144972
复制相似问题