App Services への接続 - Flutter SDK
App
クライアントは、Atlas App Services バックエンドへのインターフェースです。 ユーザー認証や Device Sync などの App Services 機能にアクセスできます。
始める前に
アプリ クライアントへのアクセス
バージョン 1.7.0 での変更: App
はメイン分離で作成する必要があります。
クライアント アプリケーション全体で App Services 機能にアクセスするには、 App
インスタンスを作成します。 App
インスタンスは、メイン分離で 1 回だけ、できればアプリの起動後すぐに作成することをお勧めします。
App Services UI からApp Services AppのIDを取得します。 その方法については、 「 アプリ ID を検索する 」を参照してください。
AppConfiguration の作成 アプリのアプリ ID を引数として持つオブジェクト。
アプリ
AppConfiguration
を作成する 作成した に置き換えます。Flutter v 1 . 7 。 0 以降では、これはメインの分離で実行する必要があります。そうでない場合、SDK はエラーをスローします。
App
を作成したら、 App.getById
を使用してバックグラウンド分離で構築されたApp
インスタンスにアクセスできます。 詳細については、このページの「 ID によるアプリの取得 」セクションを参照してください。
final appConfig = AppConfiguration(appId); final app = App(appConfig);
複数のアプリに接続するには、複数のアプリクライアントインスタンスを作成します。 同じアプリ ID を共有するすべてのアプリクライアント インスタンスは、同じ基礎の接続を使用します。
重要
アプリ初期化後のアプリ構成の変更
バージョン1.8.0での変更: baseUrl
はAppConfiguration
にキャッシュされていません
App クライアントを初期化すると、構成は内部的にキャッシュされます。 同じプロセス内で変更された構成でアプリを閉じてから再度開かしようとしても効果はありません。 クライアントはキャッシュされた構成を引き続き使用します。
Flutter SDK バージョン1.8.0 以降では、 baseUrl は、アプリ構成にキャッシュされ なくなり ました。つまり、 baseUrl
を変更でき、アプリクライアントは更新された構成を使用します。 以前の SDK バージョンでは、キャッシュされたアプリ構成のbaseUrl
を変更しても効果はありません。
高度な構成
バージョン 1.6.0 から非推奨: App.localAppName
とApp.localAppVersion
は使用されなくなりました。
App
クライアントをより細かく制御するために、 AppConfiguration
にオプションの引数を追加できます。 接続のカスタム タイムアウトやローカル メタデータの暗号化のキーなど、さまざまな機能を追加することができます。 使用可能な構成オプションの詳細については、 AppConfiguration を参照してください 参照ドキュメント。
final appConfig = AppConfiguration(appId, defaultRequestTimeout: const Duration(seconds: 120) // ... see reference docs for all available configuration options );
注意
Android 7 以前を使用して接続する
Realm Flutter SDK に含まれるデフォルトの HTTP クライアントは、Android 7 またはそれ以前のバージョンで実行されているアプリでは機能しません。 これを回避するには、 AppConfiguration
にカスタム HTTP クライアントを追加する必要があります。 詳しくは、「 Android 7 以前を使用して App Services に接続する 」を参照してください。
ID でアプリを取得
バージョン 1.7.0 の新機能。
App
メイン分離で インスタンスを作成したら、アプリ ID を App.getById() に渡すことで、バックグラウンド分離で構築された インスタンスにアクセスできます。 使用して複数のドキュメントを挿入できます。その後、必要に応じてApp
ユーザーとユーザーを操作するために使用できます。
// Create an App instance once on main isolate, // ideally as soon as the app starts final appConfig = AppConfiguration(appId); final app = App(appConfig); final receivePort = ReceivePort(); // Later, access the App instance on background isolate await Isolate.spawn((List<Object> args) async { final sendPort = args[0] as SendPort; final appId = args[1] as String; try { final backgroundApp = App.getById(appId); // ... Access App users final user = backgroundApp?.currentUser!; // Use the App and user as needed. sendPort.send('Background task completed'); } catch (e) { sendPort.send('Error: $e'); } }, [receivePort.sendPort, appId]);
特定のサーバーへの接続
デフォルトでは、Atlas Device SDK はhttps://services.cloud.mongodb.com
のグローバルbaseUrl
を使用して Atlas に接続します。 場合によっては、別のサーバーに接続する必要があるかもしれません。
App Services Appはローカル配置を使用しており、リージョン内のローカル
baseUrl
に直接接続する場合があります。 詳しくは、「 App Services をローカル配置した場合 」のドキュメントを参照してください。Edge Server インスタンスに接続する場合。 詳細については、「 Atlas Device SDK App Services から Edge Server への接続」ドキュメントを参照してください。
AppConfiguration で を指定できます。baseUrl
// Specify a baseUrl to connect to a server other than the default final appConfig = AppConfiguration(appId, baseUrl: Uri.parse('https://example.com')); var app = App(appConfig);
実行中に別のサーバーへの接続
バージョン 1.8.0 の新機能。
バージョン2.2.0での変更: updateBaseUrl
はnull
値を受け入れます
場合によっては、アプリの実行中にbaseUrl
を変更する必要があるかもしれません。 たとえば、Edge Server 間でローテーションしたり、App Services 接続から Edge Server 接続に移行したりする場合があります。
baseUrl
実行時に変更するには、実験的な アプリ.updateBaseUrl を呼び出します 使用して複数のドキュメントを挿入できます。null
を渡すと、 baseUrl
をデフォルト値にリセットできます。
// Specify a custom baseUrl to connect to. // In this case, an Edge Server instance running on the device. final appConfig = AppConfiguration(edgeServerAppId, baseUrl: Uri.parse('http://localhost:80')); var app = App(appConfig); // ... log in a user and use the app ... // Later, change the baseUrl to the default: // https://services.cloud.mongodb.com await app.updateBaseUrl(null);
この API は実験的なものであり、将来のリリースで変更される可能性があります。
ユーザーにログインして同期されたデータベースを開いた後にbaseUrl
を変更する場合は、アプリでクライアント リセットが実行される必要があります。 詳細については、 「 クライアントのリセット 」を参照してください。
コードで次の操作を実行します。
app.updateBaseUrl
メソッドを使用してbaseUrl
を更新する新しいものを使用してログインするよう、ユーザーを再認証する
baseUrl
同期されたデータベースを開き、新しいサーバーからデータをプルします
ユーザーが認証を行い、新しいサーバーに接続するには、サーバーとクライアントの両方がオンラインである必要があります。 サーバーがオンラインでない場合、またはクライアントにネットワーク接続がない場合、ユーザーは認証を行いデータベースを開くことができません。