1

我正在尝试为 android 实现一个聊天应用程序(用户可以在其中与位于同一位置的人交流)。我认为它是一个面向地理特定的 facebook 信使。我遇到了诸如重复拉动、彗星、波什、websockects、套接字编程、xmpp(需要像openfire这样的xmpp服务器)等术语来做到这一点。但是我的资源是固定的,比如 apache、php (codeignter) 和 MySql。我需要找到有效的方法来做到这一点。伙计们,我需要这个。请帮我。

谢谢你,阿比亚

4

1 回答 1

7

Android 上的首选方法是Google Cloud Messaging

Google Cloud Messaging for Android (GCM) 是一项服务,可让您将数据从服务器发送到用户的 Android 设备。这可能是一条轻量级消息,告诉您的应用程序要从服务器获取新数据(例如,朋友上传的电影),也可能是一条包含高达 4kb 有效负载数据的消息(因此即时消息等应用程序可以直接消费消息)。

GCM 服务处理消息排队和传递到目标设备上运行的目标 Android 应用程序的所有方面。无论您的消息传递需求有多大,GCM 都是完全免费的,并且没有配额。

本质上,它的工作原理是这样的:您的服务器与 Google 对话,Google 将消息实时(或几乎如此,只要设备已打开电源并连接到 Internet)推送到 Android 设备。首次安装应用程序时(以及将来重新验证注册),Android 设备上会发生一个注册过程。在您的 Android 应用程序中,您有责任将此注册 ID 发送到您的服务器,以便您可以存储它以备将来使用。当您的服务器想要将消息推送到该设备时,它会使用此注册 ID。

您的服务器和 Google 之间的通信协议是基于 HTTPS 的 JSON。您的服务器可以使用任何语言/技术,只要它可以与 Google 的服务器通信。一个 PHP/MySQL 应用程序绝对可以满足服务的基本要求:

在编写使用 GCM 功能的客户端 Android 应用程序之前,您必须有一个满足以下条件的应用程序服务器:

  • 能够与您的客户沟通。
  • 能够向 GCM 服务器发出 HTTPS 请求。
  • 能够使用指数回退处理请求并根据需要重新发送。
  • 能够存储 API 密钥和客户端注册 ID。

在客户端,Android 设备必须运行 API 版本 8 (Android 2.2) 或更高版本。当然,处理传入消息也是您的 Android 应用程序的责任(使用广播接收器,因为每当消息到达时,Android 系统都会向您的接收器发送一个 Intent),这允许您根据需要处理消息。

于 2012-12-29T19:36:06.447 回答