作为在尝试使用我们的CoreData应用程序创建iCloud原型时遇到iCloud痛苦的人,Simperium看起来非常有前景,但我很想知道它如何处理一些锋利的边缘。
我遇到的一个问题是如何在应用程序启动时优雅地处理引导数据。用户第一次启动我们的应用程序时,我们会将一些默认数据加载到我们的CoreData数据库中。如果用户首先在iPhone上启动应用程序,然后再在iPad上启动应用程序,则由于同步,他们最终会在两个设备上重复启动引导数据。使用iCloud,解决方案是挂钩iCloud合并过程。
我如何处理Simperium?
答案 0 :(得分:0)
至少有几种方法可以做到这一点。
您可以为每个种子对象硬编码simperiumKey
。例如,在便笺应用中,如果每个新用户都收到欢迎提示,您可以使用simperiumKey
welcomeNote
在本地创建该提示。这将确保该用户的帐户(在任何设备上)中只存在一个欢迎注释。使用这种方法,可能会有一些冗余数据传输,因此最好不要有大量的种子数据。另一方面,如果您希望新用户可以立即使用数据,即使他们在首次启动您的应用时处于离线状态,也可以使用此方法。
使用Simperium,您还可以选择使用服务器进程。您可以使用在创建帐户时运行某些代码的Python或Ruby侦听器为数据设置新用户帐户。如果有大量数据,这是一个很好的方法,但缺点是用户需要在种子数据传输之前联机(当然传输本身需要一些时间)。
这些方法有些微妙之处。使用第一种方法,使用welcomeNote
示例,如果您的用户删除welcomeNote
并在以后重新安装您的应用,welcomeNote
将会复活(但从不重复),因为它正在在本地创建。这通常是可以接受的。使用第二种方法,welcomeNote
将只播种一次,因此即使您的应用重新安装,它也永远不会复活。