Android推送通知未使用Firebase云消息传递或任何其他类似服务

问题描述 投票:4回答:2

我正在开发一个用于学习目的的Android聊天应用程序,它使用服务器 - 客户端架构。我自己用Java写了服务器端(因为我正在努力学习)而客户端是一个Android应用程序。我正在使用TCP套接字进行通信。

当两个客户的应用程序打开并连接时,一切都很有效,但我希望客户端A仍然能够在客户端B没有打开应用程序时向客户端B发送消息。

在做了一些研究后,我意识到我需要使用android推送通知,这将允许我的服务器与客户端(Android应用程序)进行通信,即使应用程序未通过触发客户端的意图打开或运行。我做了一些更多的研究,我发现每个教程都使用第三方服务作为中间人来实现这一目标,例如Firebase云消息传递,这违背了我自己尝试学习的目的。

因为我这样做是为了学习目的,我不想使用任何这些服务,例如Firebase Cloud Messaging,我想从我在java中编写的服务器中自己触发意图,而不使用中间人。

这里的主要目标是在应用程序关闭时从我的服务器向Android应用程序发送消息,而不使用任何第三方软件,如Firebase云消息传递。

我不确定如何实现这一目标,如果有人能指出我正确的方向,我将不胜感激。谢谢!

java android sockets server client
2个回答
0
投票

除了sahand-zehtabchi之外我想说,这样的服务应该最好在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系统服务。


0
投票

我认为当应用程序处于后台时,您可以启动服务并打开套接字然后开始侦听新消息,当收到新消息时,您可以处理通过android sdk通知显示通知。

© www.soinside.com 2019 - 2024. All rights reserved.