我正在编写一个管理sqlite数据库的应用程序,我已经编写了一个Web服务器,我希望用户在我的Web服务器中注册用户名和密码,我已经知道如何从ios app向服务器发出请求接收响应,但我想启用sqlite数据库同步到其他设备,我现在用核心数据我可以使用iCloud同步,但现在我更喜欢使用sqlite,并找到一种方法来同步它,例如我想创造这个:
现在我无法了解,服务器如何将此更改发送到其他设备?设备必须始终监听服务器?或者有办法将此更新直接发送到某些设备并处理它?像苹果推送通知?
编辑:如果可以使用苹果推送通知来执行此操作,我不希望警告文本声音并标记用户,但发送“无声通知”可能吗?
答案 0 :(得分:1)
作为一个高层,有几种不同的方法可以解决这个问题,所有这些方法都有利有弊。两个名称两个示例,您可以执行轮询方法,主动推送或混合方法。
轮询:在某个预定的时间间隔内,应用会尝试“通过电话回家”并将增量数据库更改发送到服务器。在这里,您知道您的服务器将在任何给定的时间间隔内预期X个响应,以便您可以适当地衡量您的负载。
主动推送:用户通过点击“同步”按钮决定何时将这些更改发送到服务器。这允许用户在他们知道有变化时只将数据推送回服务器,但是过度热心的用户可能会进行更改,上传,进行更改,上传等,而不是排队一堆更改并将其全部发送立刻。这可能会经常导致不需要的服务器调用。
混合:您在应用程序中设置了一个轮询计划,并且如果需要尽快进行重大更改,则允许用户随意进行同步。
关于等式的听众方面,您在概念上面临类似的挑战。如果原始用户进行了20次更改并按下同步20次,您是否也会对第二个用户的设备进行20次轰炸,或者您是否将这些更改排队并每5分钟发送一次(例如)?除非您将两个设备相互配对或连接到同一网络并且通过您的应用程序彼此可见,否则您将需要利用该后端服务器。推送通知以这种方式非常有用,但是需要额外的开发和设置开销才能正确实现它们。
要把这一切都搞砸了,我会建议你在开始沿着一条小路走下去之前,先想出你想要的同步模型。