Web服务向iPhone发送信息

时间:2012-04-17 22:23:33

标签: iphone web-services asihttprequest

我为我的应用创建了一些Web服务,如下所示。 1.允许主机设备将其信息发送到Web服务,并将其存储在sql数据库中。 2.允许客户端设备根据sql数据库中的信息查看附近的所有设备。

我希望客户端现在能够单击其中一个设备进行连接,然后以某种方式将两者连接在一起。我现在的问题是,我的网络服务只能发送对设备请求的响应。我想要的是如果主机设备可能按下按钮,它会将该信息发送到网络服务,然后网络服务会将一些信息发送给之前连接的客户端。

如何完成从Web服务向未请求任何内容的设备发送信息?

背景资料: 我正在使用基于php的Web服务和ASIHTTPRequest在iphone端发送和接收信息。

2 个答案:

答案 0 :(得分:1)

在99%的情况下,您将要使用轮询。想想任何获取消息的应用程序(电子邮件,带朋友的话,等等)。他们都打电话给服务员并问“我有什么新消息吗?”您必须为您的应用找出合适的频率。

在极少数情况下,您需要近乎实时的通信,那么您需要将应用程序设置为作为服务器运行。见这里:What classes do I use to make an iPhone act as a server?。显然电池和带宽成本要高得多。

答案 1 :(得分:0)

你可能会保持一个持久的连接打开,但是当网络状况发生变化时(例如从网络转移到网络,开启/关闭蜂窝等)时,这将会中断。

客户端可以快速轮询服务器,但这不仅会导致服务器上的负载超过理想负载,更重要的是会烧毁客户端设备的电池。 (因为无论网络交易有多小,蜂窝无线电都具有相当长的最小上电间隔,因此3G也是如此。)

如果您正在讨论相当零星的更新(实时更新确实会调用上面的第一个选项,如果TCP会话被杀死,则会进行适当的错误处理和重新连接),您可以考虑Apple Push Notifications - 前提是通知有效载荷与APNS指南一致。它们的行为几乎与您描述的一致。