在应用程序设置中与Web服务器同步

时间:2014-09-18 20:55:54

标签: ios objective-c inappsettingskit inappsettings

我使用InAppSettingKit来保存我的应用程序的设置。某些设置项与Web服务器相关,必须将它们保存在Web服务器中。如何同步它们并保证它们完全相同?

提前致谢。

1 个答案:

答案 0 :(得分:1)

InAppSettingKit似乎没有任何内置的客户端/服务器交互支持,因此您需要实现自己的自定义同步系统。

您的问题涉及一个非常广泛的主题,其中包含多种可能的解决方案,这些解决方案具有不同的复杂性,所以我只是解释一下,如果我处于您的处境中,我会如何做到这一点。

  1. 客户端
  2. 首先,我整合了像AFNetworking这样的东西,以简化向/从服务器保存和检索数据的过程。这样您就可以轻松地发布' POST'您对服务器的设置和' GET'当你想要检索它们时。 AFNetworking功能强大,文档齐全,免费。您可以在这里了解更多信息:

    http://www.afnetworking.com/

    每当用户进行更改时,请使用AFNetworking的方法将更改发布到驻留在服务器上的脚本,以保存它。如果要检索它,请执行GET操作。您需要在应用中生成某种唯一键以引用每个用户。如果您在应用程序中使用任何类型的登录系统,则可以将其绑定到该系统。如果您希望用户想要从多个设备中检索这些设置,您可能需要执行后者。

    您还需要决定如何处理冲突的政策。如果本地保存的设置与您从服务器提取的设置不同,您会怎么做?如果您的用户无法访问网络,您会使用什么回退?

    通常的解决方案是采取更新的内容(意味着您需要存储更新的时间戳) - 这可能最适合简单需求 - 但逻辑可能根据您的需要而有所不同。

    1. 服务器端
    2. 您需要一个服务器端组件来处理将这些更改保存到服务器。这可以是Node.js,Ruby,PHP等脚本,它接受服务器发送给它的输入,并将其保存在某个数据库或文件中。这也是一个广泛的主题,实际上取决于您的编程背景在服务器端。

      注意:您应该考虑此类设置的安全需求,但如果保存的设置并非完全敏感,则可能会很少。否则,您需要采取适当措施来保护数据(SSL / TLS,salting / hashing密码等)。

      1. 你需要这个吗?
      2. 你特别提到过"网络服务器"在你的问题中,所以我假设你有自己的服务器,并且很乐意为它编写代码(或者愿意学习如何)。这就是我编写自己的客户端/服务器代码的方式,它有很多优点,但如果你所做的只是保存一些设置,那么你的需求可能会有些过分。

        iOS 8推出了一款名为CloudKit的简化iCloud系统。它将所有内容与用户的iCloud帐户联系起来,并且设计简单。如果你所做的只是同步一些简单的设置,你可以使用CloudKit的键/值存储来为你处理。

        CloudKit有一些缺点。存储的数据是不透明的(例如,您无法从网络应用程序或Android应用程序访问它),仅限于iOS 8及更高版本,如果您的应用程序是非常非常受欢迎。但是,对于简单的设置同步,这可能完全适合您的需求。

        CloudKit定价(可能对您免费):

        https://developer.apple.com/icloud/documentation/cloudkit-storage/

        关于CloudKit的WWDC视频:

        https://developer.apple.com/videos/wwdc/2014/?id=208

        https://developer.apple.com/videos/wwdc/2014/?id=231

        CloudKit设计指南:

        https://developer.apple.com/library/ios/documentation/General/Conceptual/iCloudDesignGuide/Chapters/Introduction.html

        CloudKit框架参考:

        https://developer.apple.com/library/ios/documentation/CloudKit/Reference/CloudKit_Framework_Reference/index.html

        我希望这会有所帮助。