首页 文章

Realm Sync数据重置应用程序重新安装

提问于
浏览
0

我有一个在本地使用Realm的iOS应用程序,它运行良好,我的目的是使用Realm Object Server来启用:

  • 跨设备的数据同步

  • 应用程序重新安装数据恢复

我在最后一个问题上遇到了很多麻烦 . 我的应用程序中的流程如下:

  • 首先,它试图在我的Realm Sync中找到 User . 如果存在 User ,请转到步骤4.否则,转到步骤2;

  • 询问用户的姓名,收入和发薪日;

  • 获取用户的iCloud的userRecordID和 logIn 到Realm Object Server .

  • 使用SyncUser的 identity 作为 User 实体标识符 . 将我刚才提到的数据(姓名,收入和发薪日)保存到Realm;

  • 转到主应用程序屏幕,让用户享受应用程序 .

ROS正在使用基于cloudkit的身份验证 . 如果我按照上面的步骤1-4,然后重新安装该应用程序,则会出现此问题 . 我期望在步骤1中检索先前创建的 User ,但是主键旁边的所有字段都设置为空值(名称变为空字符串,收入和发薪日变为0) . 这种行为有望吗?我想在Realm的目的下做什么?

编辑

在@ AustinZ的回答之后让流程更加清晰 .

1 回答

  • 2

    “应用程序安装上的数据恢复”绝对是Realm Sync的有效用例 . 但是,您描述的流程存在问题 .

    同步的Realm由两条信息标识:同步用户和Realm对象服务器上的Realm路径(例如 /~/my/realm ) . 如果您有相同的同步用户登录到多个设备,并且每个设备都在同一路径上打开一个Realm的副本,则它们将打开相同的同步Realm并保持彼此同步 .

    但是,要获得相同的同步用户,用户需要从其设备登录Realm Object Server . 您可以通过使用 SyncCredentials.cloudKit(token:) 创建CloudKit SyncCredentials 值并将该凭据传递给 SyncUser.logIn() 来执行此操作 . 然后,设备将与Realm Object Server通信,如果登录成功,则将调用 logIn() 方法的回调块并为您提供 SyncUser . 这是您需要用来打开Realms的同步用户 .

    所以:

    • 您不应手动将用户或用户信息保存到Realms . 我们会自动保留相关信息 .

    • 如果用户删除并重新安装了他们的应用程序,应用程序's documents and files are deleted as well, which means you shouldn' t假定您可以在重新安装创建它的应用程序后访问Realm的数据 .

    • 您应该在步骤3中使用用户的CloudKit凭据并登录到Realm对象服务器,如上所述 .

    请查看我们的documentation了解更多信息 .

相关问题