0

作为一个在尝试为我们的 CoreData 应用程序之一创建 iCloud 原型时体验过 iCloud 痛苦的人,Simperium 看起来很有希望,但我很想看看它如何处理一些尖锐的边缘。

我遇到的一个问题是如何在应用程序启动时优雅地处理引导数据。当用户第一次启动我们的应用程序时,我们会将一些默认数据加载到我们的 CoreData 数据库中。如果用户先在 iPhone 上启动应用程序,然后在 iPad 上启动应用程序,他们最终会因为同步而在两台设备上复制引导数据。使用 iCloud,解决方案是连接到 iCloud 合并过程。

我将如何使用 Simperium 处理这个问题?

4

1 回答 1

0

至少有几种方法可以做到这一点。

您可以simperiumKey对每个种子对象进行硬编码。例如,在便笺应用中,如果每个新用户都收到欢迎便笺,您可以使用simperiumKeyof本地创建该便笺welcomeNote。这将确保该用户的帐户(在任何设备上)中只存在一个欢迎注释。使用这种方法,可能会有一些冗余数据传输,因此最好不要有大量种子数据。另一方面,如果您希望新用户可以立即使用数据,即使他们在首次启动您的应用程序时处于离线状态,这种方法也很好。

使用 Simperium,您还可以选择使用服务器进程。您可以使用在创建帐户时运行一些代码的 Python 或 Ruby 侦听器为新用户帐户播种数据。如果有大量数据,这是一个好方法,但缺点是用户需要在线才能传输种子数据(当然传输本身需要一些时间)。

这些方法有一些微妙之处。使用第一种方法,使用welcomeNote示例,如果您的用户删除welcomeNote并随后重新安装您的应用程序,welcomeNote则将复活(但不会重复),因为它是在本地创建的。这通常是可以接受的。使用第二种方法,welcomeNote将只播种一次,因此即使重新安装您的应用程序,它也永远不会复活。

于 2012-08-30T18:04:47.363 回答