1

我正在编写一个管理 sqlite 数据库的应用程序,并且我已经编写了一个 Web 服务器,我希望用户使用用户名和密码在我的 Web 服务器中注册,我已经知道如何从 ios 应用程序向服务器发出请求并接收响应,但我还想启用 sqlite 数据库与其他设备的同步,我现在有了核心数据,我可以使用 iCloud 同步,但现在我更喜欢使用 sqlite,并找到一种同步它的方法,例如我想创建这个:

  1. 在 iPhone 应用程序中更改 sqlite;
  2. 应用程序将此更改发送到该用户的服务器;
  3. 然后服务器必须将此更新发送到该用户连接的其他设备;

现在我不能过去,服务器如何将此更改发送到另一台设备?设备必须始终监听服务器?或者有办法将此更新直接发送到某些设备并进行处理?像苹果推送通知?

编辑:如果可以使用苹果推送通知来执行此操作,我不希望通过文本声音和用户徽章发出警报,但发送“无声通知”可能吗?

4

1 回答 1

1

作为高层,有几种不同的方法可以解决这个问题,所有这些都有利有弊。举两个例子,您可以使用轮询方法、主动推送或混合方法。

轮询:在某个预先确定的时间间隔内,应用程序会尝试“打电话回家”并将 delta db 更改发送到服务器。在这里,您知道您的服务器将在任何给定的时间间隔内期待 X 个响应,因此您可以适当地衡量您的负载。

主动推送:用户通过点击“同步”按钮来决定何时将这些更改传输到服务器。这允许用户仅在知道有更改时才将数据推送回服务器,但过度热心的用户可能会进行更改、上传、进行更改、上传等,而不是排队一堆更改并将它们全部发送立刻。这可能会创建经常不需要的服务器调用。

混合:您在应用程序中设置轮询时间表,并让用户能够在需要尽快进行关键更改的情况下随意同步。

关于等式的听众方面,您在概念上面临着类似的挑战。如果原始用户进行 20 次更改并按 Sync 20 次,您是否也会轰炸第二个用户的设备 20 次,或者您是否将这些更改排队并每 5 分钟发送一次(例如)?除非您将两台设备相互配对或连接到同一网络并且通过您的应用程序彼此可见,否则您将需要利用该后端服务器。推送通知以这种方式非常有用,但要考虑到正确实现它们,需要额外的开发和设置开销。

为了把这一切都归结起来,我建议在开始前进之前列出您希望同步模型的样子。

于 2013-07-31T14:14:55.330 回答