RRMSyncSession

Objective-C


@interface RLMSyncSession : NSObject

Swift

@_nonSendable(_assumed) class RLMSyncSession : NSObject, @unchecked Sendable

Atlas App Services の セッション をカプセル化するオブジェクト。 セッションは、クライアント(およびディスク上のローカル Realm ファイル)とサーバー(および Atlas App Services に保存されている特定のパーティション値を持つリモート Realm)との間の通信を表します。

セッションは常に SDK によって作成され、さまざまな API を通じて販売されます。 The lifespans of sessions associated with Realms are managed automatically. セッション オブジェクトには任意のスレッドからアクセスできます。

  • セッションの現在の状態。

    このプロパティは KVE に準拠していません。

    宣言

    Objective-C

    @property (nonatomic, readonly) RLMSyncSessionState state;

    Swift

    var state: RLMSyncSessionState { get }
  • セッションの現在の接続状態。

    このプロパティは KVE に準拠し、変更が通知されるよう監視できます。 このプロパティの KVE オブジェクトは、バックグラウンド スレッドで呼び出される可能性があることに注意してください。

    宣言

    Objective-C

    @property (readonly) RLMSyncConnectionState connectionState;

    Swift

    var connectionState: RLMSyncConnectionState { get }
  • このセッションを所有するユーザー。

    宣言

    Objective-C

    - (nullable RLMUser *)parentUser;

    Swift

    func parentUser() -> RLMUser?
  • セッションが有効な場合は、このセッションに関連付けられた Realm を開くために使用できる同期構成を返します。

    宣言

    Objective-C

    - (nullable RLMSyncConfiguration *)configuration;

    Swift

    func configuration() -> RLMSyncConfiguration?
  • 同期を一時的に停止し、サーバーから切断します。

    セッションは、 resumeが呼び出されるか、Realm ファイルが閉じてから再度開かれるまで、Atlas App Services への接続を試行しません。

    宣言

    Objective-C

    - (void)suspend;

    Swift

    func suspend()
  • 同期を再開し、一時停止後に Atlas App Services に再接続します。

    セッションがすでにアクティブであった場合、またはセッションが無効な場合は何も行われません。 新しく作成されたセッションはアクティブ状態で開始され、再開する必要はありません。

    宣言

    Objective-C

    - (void)resume;

    Swift

    func resume()
  • セッションが切断された場合は、サーバーへのただちの再接続を要求します。

    Realm は、切断後に関数バックオフで自動的に再接続します。この接続は、到達可能性ハンドラーがネットワーク ステータスの変更を報告するとリセットされます。 シナリオによっては、アプリケーションが再接続の遅延をスキップしたい場合があります。たとえば、アプリケーションが guessactive 通知を受信した場合などです。これは、このメソッドを呼び出すことで可能です。 このメソッドを呼び出す必要はありません。

    このメソッドは非同期であり、現在の再接続の遅延のみをスキップするため、接続状態は引き続き、このメソッドを呼び出した後すぐに切断されます。

    セッションが現在接続されている場合は効果がありません。

    宣言

    Objective-C

    - (void)reconnect;

    Swift

    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;

    Swift

    class func immediatelyHandleError(_ token: RLMSyncErrorActionToken)
  • 同期された Realm である場合は、指定された Realm の同期セッションを取得し、そうでない場合はnilを取得します。

    宣言

    Objective-C

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

    Swift

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