我正在尝试为Android实现一个聊天应用程序(用户可以在那里与位于同一位置的人进行通信)。我认为它是一个具有Geo特定导向的facebook Messenger。我遇到了像重复拉,彗星,波什,websockects,套接字编程,xmpp(这需要像openfire这样的支持xmpp的服务器)等术语来执行此操作。但我的资源修复如apache,php(codeignter)和MySql。我需要找到有效的方法来做到这一点。伙计们我需要这个。请帮帮我。
谢谢你, abbiya
答案 0 :(得分:7)
Android上的首选方法是Google Cloud Messaging。
适用于Android的Google Cloud Messaging(GCM)是一项允许您使用的服务 将数据从您的服务器发送到用户的Android设备。 这可能是一条轻量级消息,告诉您的应用有新数据 从服务器获取(例如,由电影上传的电影) 朋友),或者它可能是一个包含最多4kb有效载荷数据的消息 (因此即时消息等应用可以直接使用消息)。
GCM服务处理消息排队的所有方面 传递到目标上运行的目标Android应用程序 设备。无论您的消息传递需求多大,GCM都是完全免费的 是,而且没有配额。
基本上,它的工作原理如下:您的服务器与Google通信,而Google会实时推送消息(或者几乎如此,只要设备已开机并连接到互联网)到Android设备。首次安装应用程序时,Android设备上会发生注册过程(以及将来重新验证注册的点)。 在您的Android应用中,您有责任将此注册ID发送到您的服务器,以便将其存储以备将来使用。您的服务器在想要将消息发送到该设备时使用此注册ID。< / p>
您的服务器和Google之间的通信协议是基于HTTPS的JSON。您的服务器可以使用任何语言/技术,只要它可以与Google的服务器通信。 PHP / MySQL应用程序绝对可以满足服务的基本要求:
在您编写使用GCM的客户端Android应用程序之前 功能,您必须具有满足以下条件的应用程序服务器 标准:
- 能够与您的客户沟通。
- 能够启动对GCM服务器的HTTPS请求。
- 能够处理请求并根据需要重新发送,使用指数后退。
- 能够存储API密钥和客户端注册ID。
在客户端, Android设备必须运行API版本8(Android 2.2)或更高版本。当然,也是你的Android应用程序负责处理传入的消息(使用BroadcastReceiver,因为Android系统会在消息到达时向你的接收者发送一个Intent),这允许你按照自己的意愿处理消息。