0

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

提前致谢。

4

1 回答 1

1

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

您的问题涉及一个非常广泛的主题,其中有多种可能的解决方案具有不同的复杂性,所以我将解释如果我处于您的情况,我会怎么做。

  1. 客户端

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

http://www.afnetworking.com/

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

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

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

  1. 服务器端

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

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

  1. 你需要这个吗?

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

在 iOS 8 中,Apple 引入了一个简化的 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

我希望这有帮助。

于 2014-09-23T03:17:26.453 回答