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.

    Declaração

    Objective-C

    - (nullable RLMUser *)parentUser;

    Swift

    func parentUser() -> RLMUser?
  • 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)
  • Obtenha a sessão de sincronização para o Realm fornecido se for um Realm sincronizado ou nil se não for.

    Declaração

    Objective-C

    + (nullable RLMSyncSession *)sessionForRealm:(nonnull RLMRealm *)realm;

    Swift

    /*not inherited*/ init?(for realm: RLMRealm)