我们正在设计一个基于服务器上特定事件的系统,为特定设备创建地理围栏。预计客户端(设备)将与服务器数据同步,问题是如何?
初始(最佳)的想法是向设备发送静默推送,以通知它有关新数据,并触发数据拉取。知道这个解决方案适用于Android OS设备,我们虽然可以在iOS上以类似的方式解决问题。不幸的是,我的iOS开发人员告诉我,静态推送在iOS上并不可靠,并在讨论后提出:Silent push notifications only delivered if device is charging and/or app is foreground。
因此,我的问题是如何使iOS设备上的(地理围栏)数据与服务器端保持同步?
在这种情况下是否还有其他解决方案?也许我们使用静默推送的方法是不对的,但Apple解决方案还有其他用于此类用例的内容吗?
答案 0 :(得分:2)
这是一款名为Simperium的精彩服务,其iOS SDK可帮助您保持信息同步。我听说过他们,因为我开始使用SimpleNote,一个使用同步服务的免费笔记工具。他们被Automattic收购,后者运行Wordpress,因此整个交易应该相当稳定。
希望这有帮助!
答案 1 :(得分:0)
您可以在AppDelegate中的applicationDidEnterBackground:
方法中运行同步操作。这是我一直使用的解决方案,只要同步操作不会花费太长时间。
在这里,您还可以查询数据库中的数据更改,而不是将触发器推送到设备,这可能会因推送通知而变得毛茸茸,并且实际上并不是他们的预期用途。如果找到数据中的更改(或检查了某个布尔标志),则启动数据拉取。
答案 2 :(得分:0)
我不确定您使用了多少数据,但每隔5分钟进行一次REST查询就是我要去的方式。也许您甚至可以在每次启动应用程序时将其切换为查询都足够好?
我们有一个应用程序,其中用户数据需要与后端服务器同步 - 每次我们启动应用程序时,它都会查询后端服务器以查看是否有任何更新。我们从服务器获取数据,然后我们可以根据最新数据检查我们的哈希值 - 如果它没有“匹配”,那么我们就会提取新的数据集。
一般来说,iOS并不能让你像在Android上那样做多任务。现在,如果您没有发布到应用程序商店 - 并且仅将其作为内部应用程序使用,您可以使用某些内容来运行并以后台模式运行。