我正在使用 InAppSettingKit 来保存我的应用程序的设置。有些设置项与网络服务器相关,需要保存在网络服务器中。我怎样才能同步它们并保证它们是相同的?
提前致谢。
我正在使用 InAppSettingKit 来保存我的应用程序的设置。有些设置项与网络服务器相关,需要保存在网络服务器中。我怎样才能同步它们并保证它们是相同的?
提前致谢。
InAppSettingKit 似乎没有对客户端/服务器交互的任何内置支持,因此您需要实现自己的自定义同步系统。
您的问题涉及一个非常广泛的主题,其中有多种可能的解决方案具有不同的复杂性,所以我将解释如果我处于您的情况,我会怎么做。
首先,我会集成 AFNetworking 之类的东西来简化向/从服务器保存和检索数据的过程。这将允许您轻松地将您的设置“发布”到服务器,并在您希望检索它们时“获取”它们。AFNetworking 功能强大、文档齐全且免费。您可以在这里了解更多信息:
每当用户进行更改时,使用 AFNetworking 的方法将该更改发布到驻留在服务器上保存它的脚本。当您希望检索它时,请执行 GET 操作。您需要在应用程序中生成某种唯一键来引用每个用户。如果您在应用程序中使用任何类型的登录系统,您可以将其绑定到该系统。如果您希望用户想要从多个设备检索这些设置,您可能需要执行后者。
您还需要决定如何处理冲突的政策。如果本地保存的设置与您从服务器中提取的设置不同,您会怎么做?如果您的用户无法访问网络,您会使用什么后备方案?
通常的解决方案是只取最近的东西(意味着您需要存储更新的时间戳) - 这可能最适合简单的需求 - 但逻辑可能会因您的需要而异。
您将需要一个服务器端组件来处理将这些更改保存到服务器。这可能是一个 Node.js、Ruby、PHP 等脚本,它接受服务器发送给它的输入并将其保存在数据库或某个文件中。这也是一个广泛的话题,实际上取决于您在服务器端的编程背景。
注意:您应该考虑这种设置的安全需求,尽管如果保存的设置根本不敏感,这可能是最小的。否则,您将需要采取适当的措施来保护数据(SSL/TLS、加盐/散列密码等)。
您在问题中特别提到了“网络服务器”,所以我假设您拥有自己的服务器并且很乐意为它编写代码(或愿意学习如何)。这就是我编写自己的客户端/服务器代码的方式,它有很多优点,但如果您所做的只是保存一些设置,则可能会超出您的需求。
在 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 设计指南:
CloudKit 框架参考:
我希望这有帮助。