Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

App Services への接続 - Flutter SDK

項目一覧

  • 始める前に
  • アプリ クライアントへのアクセス
  • 高度な構成
  • ID でアプリを取得
  • 特定のサーバーへの接続
  • 実行中に別のサーバーへの接続

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. AppConfiguration の作成 アプリのアプリ ID を引数として持つオブジェクト。

  3. アプリ AppConfigurationを作成する 作成した に置き換えます。Flutter v 1 . 7 。 0 以降では、これはメインの分離で実行する必要があります。そうでない場合、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は使用されなくなりました。

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 に接続する 」を参照してください。

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

場合によっては、アプリの実行中に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を変更する場合は、アプリでクライアント リセットが実行される必要があります。 詳細については、 「 クライアントのリセット 」を参照してください。

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

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

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

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

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

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

戻る

Atlas App Services