Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保持iOS应用程序与服务器同步_Ios_Iphone_Apple Push Notifications_Data Synchronization - Fatal编程技术网

保持iOS应用程序与服务器同步

保持iOS应用程序与服务器同步,ios,iphone,apple-push-notifications,data-synchronization,Ios,Iphone,Apple Push Notifications,Data Synchronization,我们正在设计一个系统,该系统基于服务器上的特定事件为特定设备创建地理围栏。预计客户端(设备)将与服务器数据同步,问题是如何同步 最初(最理想的)想法是向设备发送一个无声的推送,通知它新数据,并触发数据拉取。我们知道这个解决方案将适用于Android操作系统设备,我们认为这个问题可以在iOS上以类似的方式解决。不幸的是,我的iOS开发人员告诉我,静默推送在iOS上不可靠,并介绍了以下讨论: 因此,我的问题是如何使iOS设备上的(地理围栏)数据与服务器端保持同步 我们可以拉,比如说每5分钟,这个解

我们正在设计一个系统,该系统基于服务器上的特定事件为特定设备创建地理围栏。预计客户端(设备)将与服务器数据同步,问题是如何同步

最初(最理想的)想法是向设备发送一个无声的推送,通知它新数据,并触发数据拉取。我们知道这个解决方案将适用于Android操作系统设备,我们认为这个问题可以在iOS上以类似的方式解决。不幸的是,我的iOS开发人员告诉我,静默推送在iOS上不可靠,并介绍了以下讨论:

因此,我的问题是如何使iOS设备上的(地理围栏)数据与服务器端保持同步

  • 我们可以拉,比如说每5分钟,这个解决方案是非常低效的,因为大多数设备新的GeoFence很少改变,如果有的话,但是我们的“超级用户”需要经常更新GeoFence
  • 我们可以用某种无声的推动机制来推动,但它必须是可靠的
  • 可能是某种类型的持久连接(tcp或更好的udp),但这似乎是电池耗尽的解决方案。除了不可靠之外,服务器还必须跟踪IP的变化,这在许多蜂窝网络上都是不可能的
  • WebSocket。另外,电池消耗解决方案,不适用于后台同步。对于真正很少更新数据的设备(比如一个月一次),过度杀伤力
  • 一些商业解决方案(PubNub或Pusher),但我们肯定更喜欢内部解决方案

在这种情况下是否有其他解决方案?也许我们使用静默推送的方法不正确,但对于这种用例,苹果还有其他内置解决方案?

您可以在AppDelegate中的
ApplicationIdentinterBackground:
方法中运行同步操作。这是我一直使用的解决方案,只要同步操作不会花费太长时间


在这里,您还可以查询数据库中的数据更改,而无需将触发器推送到设备上,因为推送通知可能会导致问题,而实际上并不是它们的预期用途。如果在数据中发现更改(或选中某个布尔标志),则启动数据拉取

我不确定您正在处理多少数据,但我会每5分钟进行一次REST查询。也许你甚至可以在每次启动应用程序时将其切换为查询,这样就足够了

我们有一个应用程序,其中用户数据需要与后端服务器同步-每次启动应用程序时,它都会查询后端服务器,查看是否有任何更新。我们对来自服务器的数据进行md5hash,然后我们可以根据最新的数据检查我们的hash-如果它不“匹配”,那么我们提取新的数据集


一般来说,iOS不允许你像android那样完成多任务。现在,如果你不向应用商店发布应用程序,并且只将其作为内部应用程序使用,你可以在后台模式下运行。有一个很棒的服务叫做iOS SDK,它可以帮助保持你的信息同步。我之所以听说它们,是因为我开始使用SimpleNote,一种使用同步服务的免费笔记工具。它们被Automatic收购,后者经营Wordpress,因此整个交易应该相当稳定


希望这有帮助

显然,您只需要使用PubNub、Firebase或类似工具。你们问了一些“关于当今应用程序是如何制作的主要问题”。你不再真正“制作应用”,而是使用PubNub或Firebase制作系统。