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 }
-
このセッションを所有するユーザー。
-
セッションが有効な場合は、このセッションに関連付けられた 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)