【问题标题】:Keeping iOS app in sync with server使 iOS 应用程序与服务器保持同步
【发布时间】:2016-05-26 18:54:03
【问题描述】:

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

最初(最佳)的想法是向设备发送静默推送,以通知它有新数据,并触发数据拉取。知道此解决方案适用于 Android OS 设备,我们虽然可以在 iOS 上以类似的方式解决该问题。不幸的是,我的 iOS 开发人员告诉我静默推送在 iOS 上不可靠,并提出以下讨论:Silent push notifications only delivered if device is charging and/or app is foreground

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

  • 我们可以每隔 5 分钟拉一次,这种解决方案效率极低,对于大多数设备来说,新地理围栏很少更改,但我们的“高级用户”需要经常更新地理围栏。
  • 我们可以使用某种静默推送机制进行推送,但它必须可靠。
  • 可能是某种持久连接(tcp 或更好的 udp),但这似乎是电池耗尽的解决方案。除了不可靠之外,服务器还必须跟踪不断变化的 IP,这在许多蜂窝网络上甚至是不可能的。
  • WebSocket。也是电池耗尽的解决方案,不适用于后台同步。对于真正很少更新数据(例如每月一次)的设备来说,这种做法太过分了。
  • 一些商业解决方案(PubNub 或 Pusher),但我们肯定更喜欢内部解决方案。

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

【问题讨论】:

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

标签: ios iphone apple-push-notifications data-synchronization


【解决方案1】:

有一个很棒的服务叫做Simperium,它带有一个iOS SDK,可以帮助你保持信息同步。我听说它们是因为我开始使用 SimpleNote,这是一个使用同步服务的免费笔记工具。它们被运行 Wordpress 的 Automattic 收购,因此整个交易应该相当稳定。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

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

    您还可以在此处查询数据库中的数据更改,而不是向设备推送触发器,这可能会因推送通知而变得棘手,并且并非真正的预期用途。如果发现数据发生变化(或检查了某个布尔标志),则启动数据拉取。

    【讨论】:

      【解决方案3】:

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

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

      一般来说,iOS 不允许您像在 android 上那样进行多任务处理。现在,如果您不发布到应用商店 - 并且仅将其用作内部应用,您可能会觉得有些新奇并在后台模式下运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        • 2015-09-21
        • 2011-05-08
        相关资源
        最近更新 更多