Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
聊天应用程序android指南_Android_Mysql - Fatal编程技术网

聊天应用程序android指南

聊天应用程序android指南,android,mysql,Android,Mysql,我正在尝试创建一个聊天应用程序,我需要一些指导。我有一个登录系统的地方,这是工作。用户登录/注册,所有内容都存储在服务器上的mysql数据库中。我知道如何处理post请求和发回内容。我有一个可以显示消息的recyclerView,但我的问题如下: 假设我有两台android设备:Android1和Android2。Android1向Android2发送消息。消息将存储到服务器。如何告诉服务器将该消息定向到Android2,以及如何使Android2接收该消息 如果Android2当时处于脱机状态

我正在尝试创建一个聊天应用程序,我需要一些指导。我有一个登录系统的地方,这是工作。用户登录/注册,所有内容都存储在服务器上的mysql数据库中。我知道如何处理post请求和发回内容。我有一个可以显示消息的recyclerView,但我的问题如下:

假设我有两台android设备:Android1和Android2。Android1向Android2发送消息。消息将存储到服务器。如何告诉服务器将该消息定向到Android2,以及如何使Android2接收该消息

如果Android2当时处于脱机状态,我是否会从手机中创建某种响应,告诉服务器消息未送达,以便再次发送?现在我该如何编程服务器以再次发送消息

messages表应该类似于-senderId、receiverId、message;或者,设计它的最佳方式是什么

我在这里发现,我可以通过使用GCM、PHP和MYSQL来实现,也可以使用XMPP。哪种方法最好?我更喜欢第一个,因为我理解它并且它很容易实现。我不知道XMPP发生了什么。我用firebase创建了一个windows服务器,但我还能用我的php服务器吗?而且这种联系也让我感到困惑。我已经实现了facebook登录。有关于xmpp+android的好教程吗。我找到了一些,但不清楚


编辑:为什么这个问题会降低投票率?有什么不对劲吗

您可以使用GCM发送和接收消息。 您只需通过GCM向接收设备发送消息,即使接收设备处于脱机状态,GCM也会处理您的消息

我用套接字服务聊天。所以,我建议您使用套接字来 那个与其他产品相比,它会得到快速的响应,并满足您的所有需求 需要


我不得不面对与前一段时间完全相同的情况。我在研究中发现:

  • :telegram是一款整合良好的开源聊天信息应用程序,它处理聊天信息的所有方面,包括安全性和所有UI内容。不过,它的许可证也要求您开放代码
  • 使用服务:GCM允许您使用REST或XMPP向许多设备发送推送。即使您正在使用GCM,您也必须自己实现很多功能。在我看来,这是最好的解决办法
  • 实现一个套接字将客户端与应用服务器连接起来:这需要做大量的工作,从同步到管理应用消耗的电量,我不建议您遵循这一点 了解基本知识。。。
    • 是一种面向消息中间件的基于 XML(可扩展标记语言)。它支持近实时的 在任意两个或多个数据库之间交换结构化但可扩展的数据 网络实体

    • 是由一组协调的 应用于构件、连接件和数据的体系结构约束 元素,在分布式超媒体系统中。REST忽略了 组件实现和协议语法的详细信息,以便 关注组件的角色,组件的约束 与其他组件的交互作用及其对 重要的数据元素。通过应用REST 体系结构约束某些体系结构属性是 诱导:性能、可扩展性、简单性、可修改性、, 可视性、可移植性和可靠性

    从上面我们可以了解到,REST和XMPP只不过是一些协议,您最终可能会使用这些协议来通过体系结构的组件传递数据。XMPP是即时消息通信中最优化的协议,但是,它的实现有点复杂。幸运的是,GCM支持这两种协议

    一个可能的架构。。。 即时消息应用程序与任何其他客户端服务器应用程序一样。对他们来说至关重要的是需要将服务器中发生的更新通知客户机。要做到这一点,您需要一种适当的方式来与两个客户端进行通信。通常,这是通过一个通用的应用服务器实现的。如果您决定采用GCM方法(我的建议),您将拥有以下组件:

    • GCM应用程序服务器:负责管理令牌生成并将接收到的消息转发给目标
    • 定制应用服务器:您实现的系统后端
    • 客户端:将接收推送通知的web、android或iOS设备
    当客户端打开应用程序时,一切都会开始,然后它会直接打电话给GCM请求令牌。一旦它拥有一个令牌,设备应该与定制的应用服务器同步——这样它就知道每个连接到系统的人以及如何访问他们。自定义应用服务器在DB中维护令牌信息。当一个设备想要向另一个设备发送消息时,它将向定制应用服务器发送请求,定制应用服务器将依次检索目标的令牌并将请求转发给GCM应用服务器。然后它将向目标推进

    一个真实的例子。。。 正如我所说,我必须做一个类似的解决方案,如上所述。我的工作结果可以在以下存储库中找到:

  • :包含使用GCM的应用程序的源代码-它看起来很像Whats应用程序
  • :使用Spring Boot实现的后端 上面的两个应用程序都使用GCM和REST协议进行了一对一的对话测试,但是,我仍在进行这方面的工作,并且存在许多错误,但是代码可以作为参考,以便理解提议的体系结构

    希望我能帮上忙。

    我知道这是可能的(我找到了一本教程)