RLM Sync 세션
Objective-C
@interface RLMSyncSession : NSObject
스위프트
@_nonSendable(_assumed) class RLMSyncSession : NSObject, @unchecked Sendable
Atlas App Services '세션'을 캡슐화하는 객체입니다. 세션은 클라이언트(및 디스크의 로컬 Realm 파일)와 서버(및 Atlas App Services에 지정된 파티션 값이 저장된 원격 Realm) 간의 통신을 나타냅니다.
세션은 항상 SDK에 의해 생성되고 다양한 API를 통해 판매됩니다. Realm과 연결된 세션의 수명은 자동으로 관리됩니다. 세션 객체는 모든 스레드에서 액세스할 수 있습니다.
-
세션의 현재 상태입니다.
이 속성은 KVO를 준수하지 않습니다.
선언
Objective-C
@property (nonatomic, readonly) RLMSyncSessionState state;
스위프트
var state: RLMSyncSessionState { get }
-
세션의 현재 연결 상태입니다.
이 속성은 KVO를 준수하며 변경 사항에 대한 알림을 받기 위해 관찰할 수 있습니다. 이 속성에 대한 KVO 관찰자가 백그라운드 스레드에서 호출될 수 있다는 점에 유의하세요.
선언
Objective-C
@property (readonly) RLMSyncConnectionState connectionState;
스위프트
var connectionState: RLMSyncConnectionState { get }
-
이 세션을 소유한 사용자입니다.
-
세션이 유효하면 이 세션과 연결된 Realm을 여는 데 사용할 수 있는 동기화 구성을 반환합니다.
선언
Objective-C
- (nullable RLMSyncConfiguration *)configuration;
스위프트
func configuration() -> RLMSyncConfiguration?
-
동기화를 일시적으로 일시 중단하고 서버와의 연결을 끊습니다.
세션은
resume
가 호출되거나 Realm 파일을 닫았다가 다시 열 때까지 Atlas App Services에 연결을 시도하지 않습니다.선언
Objective-C
- (void)suspend;
스위프트
func suspend()
-
동기화를 재개하고 일시 중단한 후 Atlas App Services에 다시 연결합니다.
세션이 이미 활성화되었거나 세션이 유효하지 않은 경우 작동하지 않습니다. 새로 생성된 세션은 활성 상태에서 시작되며 재개할 필요가 없습니다.
선언
Objective-C
- (void)resume;
스위프트
func resume()
-
세션 연결이 끊어진 경우 서버에 대한 즉시 재연결을 요청합니다.
Realm은 연결 가능성 핸들러가 네트워크 상태 변경을 보고하면 재설정되는 지수 백오프로 연결이 끊긴 후 자동으로 다시 연결합니다. 애플리케이션이 디드베컴액티브(DidBecomeActive) 알림을 수신하는 경우와 같이 일부 시나리오에서는 애플리케이션이 재연결 지연을 건너뛰고 싶을 수 있으며, 이는 이 메서드를 호출하여 수행할 수 있습니다. 이 메서드를 호출할 필요는 없습니다.
이 메서드는 비동기식이며 현재 재연결 지연을 건너뛰기만 하므로 연결 상태는 일반적으로 호출 후 즉시 연결이 해제됩니다.
세션이 현재 연결되어 있는 경우에는 아무런 영향을 미치지 않습니다.
선언
Objective-C
- (void)reconnect;
스위프트
func reconnect()
-
더 이상 사용되지 않습니다.
대신 addSyncProgressNotificationForDirection 사용
진행률 알림 차단을 등록합니다.
동일한 세션에 한 번에 여러 개의 블록을 등록할 수 있습니다. 각 차단은 진행률 알림 전용 사이드 대기열에서 호출됩니다.
세션이 동기화 하위 시스템으로부터 이미 진행 상황 정보를 받은 경우, 차단이 즉시 호출됩니다. 그렇지 않으면 진행률 정보를 사용할 수 있게 되는 즉시 호출됩니다.
이 메서드에서 반환된 토큰은 진행률 알림이 필요한 기간 동안 유지되어야 하며, 알림이 더 이상 필요하지 않거나 토큰이 폐기되기 전에
-invalidate
메서드를 호출해야 합니다.토큰이 반환되지 않으면 알림 차단이 다시 호출되지 않습니다. 여기에는 여러 가지 이유가 있습니다. 세션에서 이전에 치명적인 오류가 발생한 경우 진행률 알림 차단을 허용하지 않습니다. 차단이
RLMSyncProgressForCurrentlyOutstandingWork
모드에서 구성되었지만 보고할 추가 진행률이 없는 경우(예: 전송 가능한 바이트 수와 전송된 바이트 수가 동일한 경우) 차단이 다시 호출되지 않습니다.선언
Objective-C
- (nullable RLMProgressNotificationToken *) addProgressNotificationForDirection:(RLMSyncProgressDirection)direction mode:(RLMSyncProgressMode)mode block:(nonnull RLMProgressNotificationBlock) block;
매개변수
direction
이 진행률 알림 차단에서 추적할 전송 방향(업로드 또는 다운로드)입니다.
mode
이 진행률 알림 차단의 원하는 동작입니다.
block
알림을 사용할 수 있을 때 호출할 차단입니다.
반환 값
알림이 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.
-
진행률 알림 차단을 등록합니다.
동일한 세션에 한 번에 여러 개의 블록을 등록할 수 있습니다. 각 차단은 진행률 알림 전용 사이드 대기열에서 호출됩니다.
세션이 동기화 하위 시스템으로부터 이미 진행 상황 정보를 받은 경우, 차단이 즉시 호출됩니다. 그렇지 않으면 진행률 정보를 사용할 수 있게 되는 즉시 호출됩니다.
이 메서드에서 반환된 토큰은 진행률 알림이 필요한 기간 동안 유지되어야 하며, 알림이 더 이상 필요하지 않거나 토큰이 폐기되기 전에
-invalidate
메서드를 호출해야 합니다.토큰이 반환되지 않으면 알림 차단이 다시 호출되지 않습니다. 여기에는 여러 가지 이유가 있습니다. 세션에서 이전에 치명적인 오류가 발생한 경우 진행률 알림 차단을 허용하지 않습니다. 차단이
RLMSyncProgressForCurrentlyOutstandingWork
모드에서 구성되었지만 보고할 추가 진행률이 없는 경우(예: 전송 가능한 바이트 수와 전송된 바이트 수가 동일한 경우) 차단이 다시 호출되지 않습니다.선언
Objective-C
- (nullable RLMProgressNotificationToken *) addSyncProgressNotificationForDirection:(RLMSyncProgressDirection)direction mode:(RLMSyncProgressMode)mode block: (nonnull RLMSyncProgressNotificationBlock) block;
매개변수
direction
이 진행률 알림 차단에서 추적할 전송 방향(업로드 또는 다운로드)입니다.
mode
이 진행률 알림 차단의 원하는 동작입니다.
block
알림을 사용할 수 있을 때 호출할 차단입니다.
반환 값
알림이 전달되기를 원하는 기간 동안 보유해야 하는 토큰입니다.
-
보류 중인 업로드가 완료되거나 세션이 만료될 때까지 기다렸다가 콜백을 지정된 대기열로 전달합니다.
선언
Objective-C
- (BOOL)waitForUploadCompletionOnQueue:(nullable dispatch_queue_t)queue callback:(nonnull void (^)(NSError *_Nullable)) callback;
-
보류 중인 다운로드가 완료되거나 세션이 만료될 때까지 기다렸다가 콜백을 지정된 대기열로 전달합니다.
선언
Objective-C
- (BOOL)waitForDownloadCompletionOnQueue:(nullable dispatch_queue_t)queue callback:(nonnull void (^)(NSError *_Nullable)) callback;
-
오류 조치 토큰이 주어지면 즉시 해당 조치를 처리합니다.
~를 참조하세요.
`RLMSyncErrorClientResetError
,RLMSyncErrorPermissionDeniedError
선언
Objective-C
+ (void)immediatelyHandleError:(nonnull RLMSyncErrorActionToken *)token;
스위프트
class func immediatelyHandleError(_ token: RLMSyncErrorActionToken)