领域-匿名用户同步到新设备

问题描述 投票:1回答:2

我了解Realm提供了anonymous user logins

即使您的应用不需要用户登录并创建一个唯一帐户,我们仍然建议您使用用户代码登录您的应用与出现在后台的随机生成的用户使用该应用程序的用户;我们为此明确创建了匿名用户目的。

尽管我想使用Realm的主要原因是在设备之间同步数据。例如,用户在iPhone上创建记事,如果在两个设备上都安装了该应用,则记事也应出现在iPad上。我不明白如果用户是匿名的,这怎么可能。我的要求是否意味着我需要强制用户(非匿名)在两个设备上登录?如果是这样,匿名用户的用例是什么?

相关,如果我有匿名用户,我将如何将他们隐瞒为“已登录”用户?我想让用户无需登录即可使用该应用。如果我需要他们登录,我只想在他们升级为“专业版”或付费订阅后进行使用。

ios realm realm-mobile-platform
2个回答
0
投票

订阅将由订阅者自动保留和维护服务器。发生数据更改时,服务器将重新评估现有数据订阅,并将更改推送到所有订阅客户端。

所以让我们举一个同步的例子。


  1. 认证

    guard let authURL = URL(string: "Realm Instance URL") else { return } let credentials = SyncCredentials.anonymous() SyncUser.logIn(with: credentials, server: authURL) { (user, error) in if let realmUser = user { // User logged in successfully } else if let realmError = error { print(realmError.localizedDescription) } }

  2. 领域实例化
  3. let realmURL = URL(string: "Realm URL") let config = realmUser.configuration(realmURL: realmURL) let realm = try! Realm(configuration: config)

  4. 全局清除以下变量
  5. private var itemsSyncSubscription: SyncSubscription? private var itemsSubscriptionToken: NotificationToken? private var itemsNotificationToken: NotificationToken?

  6. 订阅数据/表(即项目)
  7. let items = realm.objects(Item.self) itemsSyncSubscription = items.subscribe() itemsSubscriptionToken = itemsSyncSubscription?.observe(\.state, options: .initial, { (state) in switch state { case .complete: // This will be called when Items will be fetched from Realm first time print(items) case .error(let error): completion(error) default: break } }) itemsNotificationToken = items.observe { (changes) in switch changes { case .initial: print("Items Subscription Initial State")/ case .update(_, _, _, _): print("Items Subscription Update State")/ // This will be called whenever any change will happens in Items table. case .error(let error): print("Items Subscription error :\(error)")/ } }

因此,只要数据源发生任何更改,任何身份验证方法的任何登录用户都将得到通知。

0
投票

Realm Platform提供了一个内置的身份验证提供程序,支持用户名/密码和

用于开发的匿名登录和

概念使用证明。

默认情况下,Realm上启用了匿名身份验证,因为连接到Realm的任何匿名用户都可以访问Realm数据,所以它实际上是在进行测试。基于,如果您有三台设备,并且每台设备都连接到Realm A,那么所有设备都将可以访问Realm A上的数据。在开发过程中,它使复杂的身份验证变得毫无意义,因此您可以专注于同步和UI该应用程序的组件。

[目前没有将匿名用户转换为“已登录”用户的直接方法,但该#2211存在一个公开的github问题

一旦开始进行身份验证,就可以通过Access Control控制权限,该权限可以控制用户可以访问哪些数据。

[当我们开始开发时,我们通过Realm Studio创建一个Admin用户,然后将其硬编码到我们的应用程序中(同样,仅用于开发),因为:

管理员用户始终可以从任何领域读取或写入。

© www.soinside.com 2019 - 2024. All rights reserved.