RLMSyncSession
Objective-C
@interface RLMSyncSession : NSObject
Swift
@_nonSendable(_assumed) class RLMSyncSession : NSObject, @unchecked Sendable
Um objeto encapsulando uma "sessão" do Atlas App Services. As sessões representam a comunicação entre o cliente (e um arquivo Realm local no disco) e o servidor (e um Realm remoto com um determinado valor de partição armazenado no Atlas App Services).
As sessões são sempre criadas pelo SDK e distribuídas por meio de várias APIs. A duração das sessões associadas aos Realms é gerenciada automaticamente. Os objetos de sessão podem ser acessados de qualquer thread.
-
O estado atual da sessão.
Esta propriedade não é compatível com KVO.
Declaração
Objective-C
@property (nonatomic, readonly) RLMSyncSessionState state;
Swift
var state: RLMSyncSessionState { get }
-
O estado atual da conexão da sessão.
Esta propriedade é compatível com KVO e pode ser observada para ser notificada sobre alterações. Esteja avisado de que os observadores KVO para esta propriedade podem ser chamados em um thread em background.
Declaração
Objective-C
@property (readonly) RLMSyncConnectionState connectionState;
Swift
var connectionState: RLMSyncConnectionState { get }
-
O usuário que possui esta sessão.
-
Se a sessão for válida, retorne uma configuração de sincronização que possa ser usada para abrir o Realm associado a esta sessão.
Declaração
Objective-C
- (nullable RLMSyncConfiguration *)configuration;
Swift
func configuration() -> RLMSyncConfiguration?
-
Suspenda temporariamente a sincronização e desconecte-se do servidor.
A sessão não tentará se conectar ao Atlas App Services até que
resume
seja chamado ou o arquivo Realm seja fechado e reaberto.Declaração
Objective-C
- (void)suspend;
Swift
func suspend()
-
Retome a sincronização e reconecte-se ao Atlas App Services após a suspensão.
Este é um no-op se a sessão já estiver ativa ou se a sessão for inválida. As sessões recém-criadas começam no estado Ativo e não precisam ser retomadas.
Declaração
Objective-C
- (void)resume;
Swift
func resume()
-
Solicite uma reconexão imediata ao servidor se a sessão for desconectada.
O Realm se reconecta automaticamente após se desconectar com um backoff exponencial, que é redefinido quando o manipulador de acessibilidade relata uma alteração de status da rede. Em alguns cenários, um aplicação pode desejar ignorar o atraso de reconexão, como quando um aplicação recebe a notificação DigiBecomeActive, o que pode ser feito chamando esse método. Chamar este método nunca é necessário.
Esse método é assíncrono e apenas ignora o atraso de reconexão atual, de modo que o estado da conexão ainda será normalmente desconectado imediatamente após chamá-lo.
Não tem efeito se a sessão estiver conectada no momento.
Declaração
Objective-C
- (void)reconnect;
Swift
func reconnect()
-
Obsoleto(a)
Em vez disso, usar addSyncProgressNotificationForDirection
Registre um bloqueio de notificação de progresso.
Vários blocos podem ser registrados com a mesma sessão de uma só vez. Cada bloco será invocado em uma fila lateral dedicada a notificações de progresso.
Se a sessão já tiver recebido informações de progresso do subsistema de sincronização, o bloco será chamado imediatamente. Caso contrário, ele será chamado assim que as informações de progresso estiverem disponíveis.
O token retornado por este método deve ser retido enquanto as notificações de progresso forem desejadas, e o método
-invalidate
deve ser chamado nele quando as notificações não forem mais necessárias e antes que o token seja destruído.Se nenhum token for retornado, o bloco de notificação nunca será chamado novamente. Existem várias razões pelas quais isso pode ser verdade. Se a sessão tiver passado por um erro fatal, ela não aceitará bloqueios de notificações de progresso. Se o bloco foi configurado no modo
RLMSyncProgressForCurrentlyOutstandingWork
, mas não há progresso adicional para relatar (por exemplo, o número de bytes transferíveis e bytes transferidos são iguais), o bloco não será chamado novamente.Declaração
Objective-C
- (nullable RLMProgressNotificationToken *) addProgressNotificationForDirection:(RLMSyncProgressDirection)direction mode:(RLMSyncProgressMode)mode block:(nonnull RLMProgressNotificationBlock) block;
Parâmetros
direction
A direção de transferência (upload ou download) para acompanhar neste bloco de notificação de progresso.
mode
O comportamento desejado desse bloco de notificação de progresso.
block
O bloco para invocar quando as notificações estiverem disponíveis.
Valor de retorno
Um token que deve ser mantido pelo tempo que você quiser que as notificações sejam entregues.
-
Registre um bloqueio de notificação de progresso.
Vários blocos podem ser registrados com a mesma sessão de uma só vez. Cada bloco será invocado em uma fila lateral dedicada a notificações de progresso.
Se a sessão já tiver recebido informações de progresso do subsistema de sincronização, o bloco será chamado imediatamente. Caso contrário, ele será chamado assim que as informações de progresso estiverem disponíveis.
O token retornado por este método deve ser retido enquanto as notificações de progresso forem desejadas, e o método
-invalidate
deve ser chamado nele quando as notificações não forem mais necessárias e antes que o token seja destruído.Se nenhum token for retornado, o bloco de notificação nunca será chamado novamente. Existem várias razões pelas quais isso pode ser verdade. Se a sessão tiver passado por um erro fatal, ela não aceitará bloqueios de notificações de progresso. Se o bloco foi configurado no modo
RLMSyncProgressForCurrentlyOutstandingWork
, mas não há progresso adicional para relatar (por exemplo, o número de bytes transferíveis e bytes transferidos são iguais), o bloco não será chamado novamente.Declaração
Objective-C
- (nullable RLMProgressNotificationToken *) addSyncProgressNotificationForDirection:(RLMSyncProgressDirection)direction mode:(RLMSyncProgressMode)mode block: (nonnull RLMSyncProgressNotificationBlock) block;
Parâmetros
direction
A direção de transferência (upload ou download) para acompanhar neste bloco de notificação de progresso.
mode
O comportamento desejado desse bloco de notificação de progresso.
block
O bloco para invocar quando as notificações estiverem disponíveis.
Valor de retorno
Um token que deve ser mantido pelo tempo que você quiser que as notificações sejam entregues.
-
Aguarde a conclusão dos carregamentos pendentes ou a expiração da sessão e envie a chamada de resposta para a fila especificada.
Declaração
Objective-C
- (BOOL)waitForUploadCompletionOnQueue:(nullable dispatch_queue_t)queue callback:(nonnull void (^)(NSError *_Nullable)) callback;
-
Aguarde a conclusão dos downloads pendentes ou a expiração da sessão e envie a chamada de resposta para a fila especificada.
Declaração
Objective-C
- (BOOL)waitForDownloadCompletionOnQueue:(nullable dispatch_queue_t)queue callback:(nonnull void (^)(NSError *_Nullable)) callback;
-
Dado um token de ação de erro, administre imediatamente a ação correspondente.
Veja
`RLMSyncErrorClientResetError
,RLMSyncErrorPermissionDeniedError
Declaração
Objective-C
+ (void)immediatelyHandleError:(nonnull RLMSyncErrorActionToken *)token;
Swift
class func immediatelyHandleError(_ token: RLMSyncErrorActionToken)