【问题标题】:Synchronising in app settings with web server在应用程序设置中与 Web 服务器同步
【发布时间】:2014-09-18 20:55:54
【问题描述】:

我正在使用 InAppSettingKit 来保存我的应用程序的设置。有些设置项与网络服务器相关,需要保存在网络服务器中。如何同步它们并保证它们是相同的?

提前致谢。

【问题讨论】:

    标签: ios objective-c inappsettingskit inappsettings


    【解决方案1】:

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

    您的问题涉及一个非常广泛的主题,其中包含多种复杂程度不同的可能解决方案,所以我将解释一下如果我遇到您的情况,我会怎么做。

    1. 客户端

    首先,我会集成 AFNetworking 之类的东西来简化向/从服务器保存和检索数据的过程。这将允许您轻松地将您的设置“发布”到服务器并在您希望检索它们时“获取”它们。 AFNetworking 功能强大、文档齐全且免费。您可以在此处了解更多信息:

    http://www.afnetworking.com/

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

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

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

    1. 服务器端

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

    注意:您应该考虑此类设置的安全需求,尽管如果保存的设置完全不敏感,这可能是最小的。否则,您将需要采取适当的措施来保护数据(SSL/TLS、加盐/散列密码等)。

    1. 您需要这个吗?

    您在问题中特别提到了“网络服务器”,所以我假设您有自己的服务器并且很乐意为它编写代码(或愿意学习如何)。这就是我编写自己的客户端/服务器代码的方式,它有很多优点,但如果您所做的只是保存一些设置,则可能无法满足您的需求。

    Apple 在 iOS 8 中引入了一个简化的 iCloud 系统,称为 CloudKit。它将所有内容与用户的 iCloud 帐户联系起来,并且易于设置。如果您所做的只是同步一些简单的设置,您可以使用 CloudKit 的键/值存储来为您处理。

    CloudKit 有一些缺点。存储的数据是不透明的(例如,您将无法从 Web 应用程序或 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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2013-05-13
      • 2012-02-25
      • 1970-01-01
      相关资源
      最近更新 更多