在我的android应用程序中实现即时消息

本文关键字:消息 实现 我的 android 应用程序 | 更新日期: 2023-09-27 17:49:14

我认识的每个人在这里都不欢迎讨论问题,所以我尽量使它尽可能程序化。简而言之,我要求更好的方法来做到这一点,或者优化现有代码的方法。我的应用程序是通过使用Unity3D游戏引擎创建的,但它不是游戏。我只是发现引擎真的很容易使用,因为这一点,我正在使用一个名为OneSignal的服务网站。闲扯够了,再扯下去就跟问题不相干了。

这是我第一次尝试创建一个不使用Sockets的即时消息应用程序。所以我的整体设计充其量是草率的。但是,下面是我的设置:

目前我正在使用的http协议,我存储我所有的逻辑在我的web服务器上使用PHP。基本上我正在做的是返回一个JSON格式的数据库结果,在c#中使用SimpleJSON进行解析,然后由应用程序处理以显示新消息等(基于应用程序/服务器上的"已读"状态)

在我看来,这就是问题所在。虽然我可以在收到新消息时向用户发送推送通知,但如何从服务器中提取所有这些消息呢?我想到的唯一合乎逻辑的方法是每隔5-10秒不断地轮询web服务器,并检查是否有任何新消息。如果有,那么将它们添加到适当的消息列表中,并应用"未读消息"属性。

那么手机应该在内存中存储所有用户以前的消息吗?还是每次都从数据库中提取所有消息?第二个选项似乎比一个简单的聊天功能需要更多的带宽。然而,似乎存储在设备上的一堆消息会导致设备混乱,并且每次打开消息时从包含消息的平面文件存储中读取将(在我看来)使用相当多的磁盘I/O。那么消息应该存储在内存中吗?然后,您会遇到设备不断运行低内存,因为android使用相当多的内存,并且它永远不会被GC收集,除非消息(线程)被删除。

一位朋友告诉我,我应该通过推送通知发送消息,并在设备上处理接收到的消息,但这样做的一个问题是,推送通知并不总是被接收到,然后我们最终会丢失很多消息。

如果我们不断地轮询数据库,那么我们将耗尽用户的电池。

我完全不知道该怎么做,希望得到一些指导。这是我的第一个android应用程序,虽然它进展得非常非常好,但我推迟到最后的功能,因为我认为它会很简单(消息传递),结果证明是最困难的。

如果这是一个不正确的地方问这样一个问题,你能请(伴随着你的直接否决投票)在评论中发帖,这属于。

在我的android应用程序中实现即时消息

你可以尝试在你的应用程序中实现一个XMPP客户端,因为Unity3d支持。net/mono,你应该能够找到一个合适的库。

推送通知并不真正意味着IM(至少不是每条消息)