Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

App Services への接続 - Flutter SDK

Appクライアントは、Atlas App Services バックエンドへのインターフェースです。 ユーザー認証や Device Sync などの App Services 機能にアクセスできます。

  1. App Services アプリの作成

  2. App Services UI でアプリケーション ID を見つける

バージョン 1.7.0 での変更: Appはメイン分離で作成する必要があります。

クライアント アプリケーション全体で App Services 機能にアクセスするには、 Appインスタンスを作成します。 Appインスタンスは、メイン分離で 1 回だけ、できればアプリの起動後すぐに作成することをお勧めします。

  1. App Services UI からApp Services AppのIDを取得します。 その方法については、 「 アプリ ID を検索する 」を参照してください。

  2. アプリのアプリIDを引数として AppConfiguration オブジェクトを作成します。

  3. 作成したAppConfiguration を使用してアプリを作成します。 Flutter v..1 70以降では、これはメイン分離で実行する必要があります。そうしないと、SDK はエラーをスローします。

Appを作成したら、 App.getByIdを使用してバックグラウンド分離で構築されたAppインスタンスにアクセスできます。 詳細については、このページの「 ID によるアプリの取得 」セクションを参照してください。

final appConfig = AppConfiguration(appId);
final app = App(appConfig);

複数のアプリに接続するには、複数のアプリクライアントインスタンスを作成します。 同じアプリ ID を共有するすべてのアプリクライアント インスタンスは、同じ基礎の接続を使用します。

重要

アプリ初期化後のアプリ構成の変更

バージョン1.8.0での変更: baseUrlAppConfigurationにキャッシュされていません

App クライアントを初期化すると、構成は内部的にキャッシュされます。 同じプロセス内で変更された構成でアプリを閉じてから再度開かしようとしても効果はありません。 クライアントはキャッシュされた構成を引き続き使用します。

Flutter SDKバージョン1.8.0 以降では、baseUrl はアプリ構成にキャッシュされなくなりました。つまり、baseUrl を変更でき、アプリクライアントは更新された構成を使用します。以前の SDK バージョンでは、キャッシュされたアプリ構成のbaseUrl を変更しても効果はありません。

バージョン 1.6.0 から非推奨: App.localAppNameApp.localAppVersionは使用されなくなりました。

AppConfigurationAppクライアントをより細かく制御するために、 にオプションの引数を追加できます。接続のカスタム タイムアウトや ローカルメタデータ暗号化のキーなどのものを追加することができます。使用可能な構成オプションの詳細については、 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 に接続する 」を参照してください。

バージョン 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 をローカル配置した場合 」のドキュメントを参照してください。

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での変更: updateBaseUrlnull値を受け入れます

場合によっては、アプリが の実行中中にbaseUrlを変更する必要があるかもしれません。

baseUrl実行時に変更するには、実験的な アプリ.updateBaseUrl を呼び出します 使用して複数のドキュメントを挿入できます。nullを渡すと、 baseUrlをデフォルト値にリセットできます。

// Specify a custom baseUrl to connect to.
// In this case, a custom server instance running on the device.
final appConfig = AppConfiguration(customServerAppId,
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を変更する場合は、アプリでクライアント リセットが実行される必要があります。 詳細については、 「 クライアントのリセット 」を参照してください。

コードで次の操作を実行します。

  1. 同期セッションを一時停止する

  2. app.updateBaseUrlメソッドを使用してbaseUrlを更新する

  3. 新しいものを使用してログインするよう、ユーザーを再認証する baseUrl

  4. 同期されたデータベースを開き、新しいサーバーからデータをプルします

ユーザーが認証を行い、新しいサーバーに接続するには、サーバーとクライアントの両方がオンラインである必要があります。 サーバーがオンラインでない場合、またはクライアントにネットワーク接続がない場合、ユーザーは認証を行いデータベースを開くことができません。

戻る

Atlas App Services

項目一覧