【问题标题】:Get messages from server in real-time实时从服务器获取消息
【发布时间】:2013-01-22 23:15:53
【问题描述】:

这通常是一个常见问题。

我想知道邮件应用程序如何实现电子邮件接收功能? 我需要使用我的网络服务在两个设备(例如)之间实现简单的同步。

想象一个待办事项列表应用程序。

是否有可能实现这样的功能:device1 创建一个条目,然后向 webservice 发送消息,webservice 通知 device2 发生了更改,并且 device2 调整其数据并显示该条目?

【问题讨论】:

    标签: ios objective-c cocoa-touch


    【解决方案1】:

    在 iOS 上,您可以通过推送通知轻松实现您想要的。 一旦服务器检测到 device2 需要注意的更改,服务器就会向该设备发送推送通知。

    在用户查看应用程序应该自行更新的通知后,让应用程序在进入前台时自行更新也是一个好主意。

    使用推送通知而不是轮询的原因是,如果您的应用程序在后台,您最多只能继续运行一个进程 10 分钟。您可以通过将背景模式添加到您的应用程序来解决此问题,例如 VOIP、音频或位置。但如果您的应用不属于这些类别,苹果可能会拒绝您的应用。

    使用推送通知,即使您的应用未运行或在后台,设备也会收到通知。

    【讨论】:

      【解决方案2】:

      基本上有2种方式:

      1. 轮询,每台设备每N分钟向网络服务器请求更改:新建待办事项、删除待办事项、更改待办事项……然后每台设备都会进行调整。民意调查的频率取决于您正在寻找的实时水平。可以是每秒 1 个呼叫,也可以是每 12 小时或更长时间。
      2. 实现一种BOSH protocol:设备打开到服务器的连接。服务器保持打开状态,直到有新内容要发送到设备或连接超时。在这种情况下,设备会重新打开它。

      选项 1 更适合您的待办事项应用,因为您不需要实时准确性。选项 2 更适合您不想等待消息的聊天应用程序。

      【讨论】:

      • 我在我的其他应用程序中使用轮询。我想知道是否有更优雅的方式。询问网络服务器需要一些流量,第二种方式值得一看。是否涵盖套接字编程?
      • 您还可以想象设备之间的点对点机制。这主要取决于您的应用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 2019-11-24
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多