从服务器实时更新的iOS应用程序:套接字(使用stream)或苹果推送通知服务?

我正在尝试制作一个iOS 5应用程序,其中包含来自服务器的实时内容。 它只会在应用程序运行时使用这些。

为了实时进行轮询,我一直在评估两条devise路线:

从应用程序创build一个套接字到服务器,并通过stream交换信息。

  • 优点:相对简单,不会涉及第三方。
  • 缺点:电池寿命耗尽。
  • 有关这可能工作的概述,请查看这个优秀的教程: http : //www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server

使用标准的HTTP与服务器进行通信,并通过应用程序的每个请求让服务器知道他们正在查看什么。 如果有新的东西可供用户使用,请发送苹果推送通知(没有可见的提醒)让应用程序知道它可以去下载新的东西。

  • 优点:不打开一个新的TCP连接,所以电池寿命不会不必要地消耗。
  • 缺点:感觉像一个可怜的黑客。
  • APN官方文档http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html

我想套接字是要走的路,但在我承诺之前,我想要第二个意见,因为这是我第一次做出这样的事情!

它真的需要“全实时”吗? 从我的angular度来看,我更喜欢http,因为它已经很好地集成到了iOS SDK中。 它易于理解,维护和实施,大量的文档在网上。 所以,也许每分钟左右的http轮询就足够了(取决于应用程序和用户数量)。 请考虑防火墙! 由于提供商或本地WiFi的防火墙策略,stream量到未知端口可能被拒绝。 所以,如果你真的需要实时连接,我想你必须使用套接字。

套接字将是我的select。 我不知道你的应用程序有多么重要,但是如果实时是必须的,那么套接字可能会更好地执行APN。