RLMUser
Objective-C
@interface RLMUser : NSObject
Swift
@_nonSendable(_assumed) class RLMUser : NSObject, @unchecked Sendable
一个RLMUser
实例代表一个 Realm 应用用户账户。
用户可能具有一个或多个与之关联的凭证。 这些凭证向身份验证提供者唯一标识用户,并用于登录 Atlas App Services 用户帐户。
请注意,用户对象仅通过 SDK API 发出,无法直接初始化。 可以从任何线程访问用户对象。
-
标识此用户的唯一 Atlas App Services 字符串。 请注意,这与身份不同:用户可以有多个身份,但只有一个标识符。 请参阅 RLMUserIdentity。
声明
Objective-C
@property (nonatomic, readonly) NS_SWIFT_NAME(id) NSString *identifier;
Swift
var id: String { get }
-
返回当前链接到用户的身份数组。
声明
Objective-C
@property (nonatomic, readonly) NSArray<RLMUserIdentity *> *_Nonnull identities;
Swift
var identities: [RLMUserIdentity] { get }
-
用户用于访问 App Services 的刷新令牌。
默认情况下,刷新令牌在颁发后 60 天过期。 您可以将应用的刷新令牌时间配置为 30 分钟到 180 天之间的任何时间。
您可以从管理用户界面或管理 API 中为应用中的所有会话配置刷新令牌到期时间。
声明
Objective-C
@property (nonatomic, readonly, nullable) NSString *refreshToken;
Swift
var refreshToken: String? { get }
-
用户用于访问 App Services 的访问令牌。
这是向 Atlas App Services(例如 Data API 或 GraphQL)发出 HTTP 请求时所必需的。应将其视为敏感数据。
Realm 软件开发工具包(Realm SDK)会自动托管访问令牌,并在访问令牌过期时对其进行刷新。
声明
Objective-C
@property (nonatomic, readonly, nullable) NSString *accessToken;
Swift
var accessToken: String? { get }
-
用户的当前状态。
声明
Objective-C
@property (nonatomic, readonly) RLMUserState state;
Swift
var state: RLMUserState { get }
-
指示用户是否已登录。 如果访问令牌和刷新令牌不为空,则返回 true。
声明
Objective-C
@property (nonatomic, readonly) BOOL isLoggedIn;
Swift
var isLoggedIn: Bool { get }
-
为给定分区值创建基于分区的同步配置实例。
声明
Objective-C
- (nonnull RLMRealmConfiguration *)configurationWithPartitionValue: (nullable id<RLMBSON>)partitionValue;
参数
partitionValue
Realm 分区所依据的
RLMBSON
值。返回值
默认配置对象,其同步配置设置为使用给定分区值。
-
为给定分区值创建基于分区的同步配置实例。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) configurationWithPartitionValue:(nullable id<RLMBSON>)partitionValue clientResetMode:(RLMClientResetMode)clientResetMode;
参数
partitionValue
Realm 分区所依据的
RLMBSON
值。clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
返回值
将同步配置设置为使用给定分区值的配置对象。
-
为给定分区值创建基于分区的同步配置实例。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) configurationWithPartitionValue:(nullable id<RLMBSON>)partitionValue clientResetMode:(RLMClientResetMode)clientResetMode notifyBeforeReset: (nullable RLMClientResetBeforeBlock)beforeResetBlock notifyAfterReset: (nullable RLMClientResetAfterBlock)afterResetBlock;
参数
partitionValue
Realm 分区所依据的
RLMBSON
值。clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
beforeResetBlock
在客户端重置发生之前进行通知的回调。 请参阅:
RLMClientResetBeforeBlock
afterResetBlock
在客户端重置发生后发出通知的回调。 请参阅:
RLMClientResetAfterBlock
返回值
将同步配置设置为使用给定分区值的配置对象。
-
为给定分区值创建基于分区的同步配置实例。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) configurationWithPartitionValue:(nullable id<RLMBSON>)partitionValue clientResetMode:(RLMClientResetMode)clientResetMode manualClientResetHandler: (nullable RLMSyncErrorReportingBlock)manualClientResetHandler;
参数
partitionValue
Realm 分区所依据的
RLMBSON
值。clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
manualClientResetHandler
在客户端重置期间调用的错误报告块。 @See
RLMSyncErrorReportingBlock
和RLMClientResetInfo
返回值
将同步配置设置为使用给定分区值的配置对象。
-
创建一个Flexible Sync配置实例,它可以用来打开支持Flexible Sync的Realm。
注意
单个服务器端 Device Sync 应用可以与基于分区的 Realm 或基于 Flexible Sync 的 Realm 同步数据。 为了使应用程序同时包含基于分区的同步 Realm 和 Flexible Sync Realm,必须使用多个服务器端 Device Sync 应用。
声明
Objective-C
- (nonnull RLMRealmConfiguration *)flexibleSyncConfiguration;
返回值
具有 Flexible Sync 配置的
RLMRealmConfiguration
实例。 -
创建一个Flexible Sync配置实例,它可以用来打开支持Flexible Sync的Realm。
注意
单个服务器端 Device Sync 应用可以与基于分区的 Realm 或基于 Flexible Sync 的 Realm 同步数据。 为了使应用程序同时包含基于分区的同步 Realm 和 Flexible Sync Realm,必须使用多个服务器端 Device Sync 应用。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) flexibleSyncConfigurationWithClientResetMode: (RLMClientResetMode)clientResetMode notifyBeforeReset: (nullable RLMClientResetBeforeBlock) beforeResetBlock notifyAfterReset: (nullable RLMClientResetAfterBlock) afterResetBlock;
参数
clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
beforeResetBlock
在客户端重置发生之前进行通知的回调。 请参阅:
RLMClientResetBeforeBlock
afterResetBlock
在客户端重置发生后发出通知的回调。 请参阅:
RLMClientResetAfterBlock
返回值
具有 Flexible Sync 配置的
RLMRealmConfiguration
实例。 -
创建一个Flexible Sync配置实例,它可以用来打开支持Flexible Sync的Realm。
注意
单个服务器端 Device Sync 应用可以与基于分区的 Realm 或基于 Flexible Sync 的 Realm 同步数据。 为了使应用程序同时包含基于分区的同步 Realm 和 Flexible Sync Realm,必须使用多个服务器端 Device Sync 应用。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) flexibleSyncConfigurationWithClientResetMode: (RLMClientResetMode)clientResetMode manualClientResetHandler: (nullable RLMSyncErrorReportingBlock) manualClientResetHandler;
参数
clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
manualClientResetHandler
在客户端重置期间调用的错误报告块。 @See
RLMSyncErrorReportingBlock
和RLMClientResetInfo
返回值
具有 Flexible Sync 配置的
RLMRealmConfiguration
实例。 -
创建一个Flexible Sync配置实例,它可以用来打开支持Flexible Sync的Realm。
注意
单个服务器端 Device Sync 应用可以与基于分区的 Realm 或基于 Flexible Sync 的 Realm 同步数据。 为了使应用程序同时包含基于分区的同步 Realm 和 Flexible Sync Realm,必须使用多个服务器端 Device Sync 应用。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) flexibleSyncConfigurationWithInitialSubscriptions: (nonnull RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions rerunOnOpen:(BOOL)rerunOnOpen;
参数
initialSubscriptions
一个接收订阅集实例的区块,可用于添加初始订阅集,该初始订阅集将在首次打开 Realm 时执行。
rerunOnOpen
如果为 true,则允许在每次应用初创企业时运行指定的初始订阅集。这可用于重新运行动态时间范围和其他需要重新计算静态变量的查询。
返回值
具有 Flexible Sync 配置的
RLMRealmConfiguration
实例。 -
-flexibleSyncConfigurationWithInitialSubscriptions:
rerunOnOpen: clientResetMode: notifyBeforeReset: notifyAfterReset: 创建一个Flexible Sync配置实例,它可以用来打开支持Flexible Sync的Realm。
注意
单个服务器端 Device Sync 应用可以与基于分区的 Realm 或基于 Flexible Sync 的 Realm 同步数据。 为了使应用程序同时包含基于分区的同步 Realm 和 Flexible Sync Realm,必须使用多个服务器端 Device Sync 应用。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) flexibleSyncConfigurationWithInitialSubscriptions: (nonnull RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions rerunOnOpen:(BOOL)rerunOnOpen clientResetMode: (RLMClientResetMode)clientResetMode notifyBeforeReset: (nullable RLMClientResetBeforeBlock) beforeResetBlock notifyAfterReset: (nullable RLMClientResetAfterBlock) afterResetBlock;
参数
initialSubscriptions
一个接收订阅集实例的区块,可用于添加初始订阅集,该初始订阅集将在首次打开 Realm 时执行。
rerunOnOpen
如果为 true,则允许在每次应用初创企业时运行指定的初始订阅集。这可用于重新运行动态时间范围和其他需要重新计算静态变量的查询。
clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
beforeResetBlock
在客户端重置发生之前进行通知的回调。 请参阅:
RLMClientResetBeforeBlock
afterResetBlock
在客户端重置发生后发出通知的回调。 请参阅:
RLMClientResetAfterBlock
返回值
具有 Flexible Sync 配置的
RLMRealmConfiguration
实例。 -
-flexibleSyncConfigurationWithInitialSubscriptions:
rerunOnOpen: clientResetMode: manualClientResetHandler: 创建一个Flexible Sync配置实例,它可以用来打开支持Flexible Sync的Realm。
注意
单个服务器端 Device Sync 应用可以与基于分区的 Realm 或基于 Flexible Sync 的 Realm 同步数据。 为了使应用程序同时包含基于分区的同步 Realm 和 Flexible Sync Realm,必须使用多个服务器端 Device Sync 应用。
声明
Objective-C
- (nonnull RLMRealmConfiguration *) flexibleSyncConfigurationWithInitialSubscriptions: (nonnull RLMFlexibleSyncInitialSubscriptionsBlock)initialSubscriptions rerunOnOpen:(BOOL)rerunOnOpen clientResetMode: (RLMClientResetMode)clientResetMode manualClientResetHandler: (nullable RLMSyncErrorReportingBlock) manualClientResetHandler;
参数
initialSubscriptions
一个接收订阅集实例的区块,可用于添加初始订阅集,该初始订阅集将在首次打开 Realm 时执行。
rerunOnOpen
如果为 true,则允许在每次应用初创企业时运行指定的初始订阅集。这可用于重新运行动态时间范围和其他需要重新计算静态变量的查询。
clientResetMode
确定客户端重置事件的文件恢复行为。请参阅: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/
manualClientResetHandler
在客户端重置期间调用的错误报告块。 @See
RLMSyncErrorReportingBlock
和RLMClientResetInfo
返回值
具有 Flexible Sync 配置的
RLMRealmConfiguration
实例。
-
针对给定 URL 检索属于该用户的有效会话对象,如果不存在此类对象,则返回
nil
。声明
Objective-C
- (nullable RLMSyncSession *)sessionForPartitionValue: (nonnull id<RLMBSON>)partitionValue;
Swift
func session(forPartitionValue partitionValue: any RLMBSON) -> RLMSyncSession?
-
检索属于该用户的所有有效会话。
声明
Objective-C
@property (nonatomic, readonly) NSArray<RLMSyncSession *> *_Nonnull allSessions;
Swift
var allSessions: [RLMSyncSession] { get }
-
用户的自定义数据。 这是在 Atlas App Services 应用程序中配置的。
声明
Objective-C
@property (nonatomic, readonly) NS_REFINED_FOR_SWIFT NSDictionary *customData;
-
用户的个人资料。
声明
Objective-C
@property (nonatomic, readonly) RLMUserProfile *_Nonnull profile;
Swift
var profile: RLMUserProfile { get }
-
刷新用户的自定义数据。 这实际上会刷新用户的身份验证会话。
声明
Objective-C
- (void)refreshCustomDataWithCompletion: (nonnull RLMUserCustomDataBlock)completion;
-
将当前经过身份验证的用户与新身份关联,其中该身份由指定为参数的档案定义。 仅当此
RLMUser
当前已通过创建它的客户端进行身份验证时,此操作才会成功。 成功后,将返回一个带有新链接凭证的新用户。声明
Objective-C
- (void)linkUserWithCredentials:(nonnull RLMCredentials *)credentials completion:(nonnull RLMOptionalUserBlock)completion;
参数
credentials
用于将用户与新身份关联的
RLMCredentials
。completion
链接完成时调用的完成处理程序。 如果操作成功,结果将包含一个新的
RLMUser
对象,表示当前登录的用户。 -
删除用户
这将注销并销毁与该用户相关的会话。 如果未找到用户或已删除用户,则完成区块将返回错误。
声明
Objective-C
- (void)removeWithCompletion:(nonnull RLMUserOptionalErrorBlock)completion;
Swift
func remove() async throws
参数
completion
完成时调用的回调
-
从 Atlas App Services App 中永久删除该用户。
用户状态将设置为
Removed
,会话将被销毁。 如果删除请求失败,则不会更改本地身份验证状态。声明
Objective-C
- (void)deleteWithCompletion:(nonnull RLMUserOptionalErrorBlock)completion;
Swift
func delete() async throws
参数
completion
完成时调用的回调
-
注销当前用户
如果用户是匿名用户,则用户状态将设置为
Removed
;如果通过电子邮件/密码或第三方身份验证客户端进行身份验证,则状态将设置为LoggedOut
。如果注销请求失败,此方法仍将清除本地身份验证状态。声明
Objective-C
- (void)logOutWithCompletion:(nonnull RLMUserOptionalErrorBlock)completion;
Swift
func logOut() async throws
参数
completion
完成时调用的回调
-
用户 API 密钥身份验证提供商的客户端,可用于创建和修改用户 API 密钥。
此客户端只能由经过身份验证的用户使用。
声明
Objective-C
@property (nonatomic, readonly) RLMAPIKeyAuth *_Nonnull apiKeysAuth;
Swift
var apiKeysAuth: RLMAPIKeyAuth { get }
-
用于与远程 MongoDB 实例交互的客户端
声明
Objective-C
- (nonnull RLMMongoClient *)mongoClientWithServiceName: (nonnull NSString *)serviceName;
参数
serviceName
MongoDB 服务的名称
-
使用提供的名称和参数调用 Atlas App Services 函数。
声明
Objective-C
- (void)callFunctionNamed:(nonnull NSString *)name arguments:(nonnull NSArray<id<RLMBSON>> *)arguments completionBlock:(nonnull RLMCallFunctionCompletionBlock)completion;
参数
name
要调用的 Atlas App Services 函数的名称。
arguments
要提供给函数的参数
BSONArray
。completion
函数调用完成时要调用的完成处理程序。 此处理程序在非主全局
DispatchQueue
上执行。