Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

连接到 App Services - Flutter SDK

在此页面上

  • 开始之前
  • 访问应用程序客户端
  • 高级配置
  • 通过 ID 获取应用
  • 连接到特定MongoDB Server
  • 在运行时连接到不同的MongoDB Server

App客户端是 Atlas App Services 后端的接口。 它提供对用户身份验证和 Device Sync 等 App Services 功能的访问。

  1. 创建 App Services App

  2. 在 App Services 用户界面中查找应用 ID

在版本 1.7.0 中进行了更改: 必须在主隔离上创建App

创建一个实例,以便在整个应用程序中访问App App Services 功能。我们建议您在主隔离上仅创建一次App实例,最好是在应用程序启动后立即创建。

  1. 从App Services用户界面获取App Services App 的ID 。 要学习;了解如何操作,请参阅查找应用程序ID。

  2. 创建 AppConfiguration 对象,并将应用的 App ID作为参数。

  3. 创建 应用程序 AppConfiguration与刚刚创建的 一起使用。在 Flutter v 1中。 7 。 0 以后,必须在主隔离上完成此操作,否则 SDK 会引发错误。

创建App后,您可以使用App.getById在背景隔离上访问权限构造的App实例。 有关更多信息,请参阅本页上的“按ID获取应用程序”部分。

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

您可以创建多个应用客户端实例以连接多个应用。 股票相同 App ID的所有 App客户端实例使用相同的根本的连接。

重要

初始化应用后更改应用配置

在版本1.8.0中进行了更改baseUrl未缓存在AppConfiguration

初始化 App客户端时,会在内部缓存配置。 尝试在同一进程中关闭并重新打开配置已更改的应用无效。 客户端继续使用缓存的配置。

在Flutter SDK版本1.8.0 及更高版本中, baseUrl 不再 缓存在应用配置中。这意味着您可以更改baseUrl ,应用客户端将使用更新后的配置。 在早期 SDK 版本中,对缓存的应用配置中的baseUrl进行更改无效。

自 1.6.0 版起已弃用: 不再使用App.localAppNameApp.localAppVersion

您可以向AppConfiguration添加可选参数,以便更精细地控制App客户端。 您可能需要添加自定义连接超时或本地元数据加密密钥等功能。 要学习;了解可用的配置选项,请参阅 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 或更早版本上运行的应用。 要解决此问题,您必须将自定义 HTTP 客户端添加到AppConfiguration中。 要了解更多信息,请参阅使用 Android 7 或更早版本连接到 App Services。

1.7.0 版本的新增功能

App在主隔离上创建 实例后,您可以通过将 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文档。

您可以在baseUrl AppConfiguration 中指定 :

// 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

要在运行时更改baseUrl ,请调用实验性 应用.updateBaseUrl 方法。您可以传递nullbaseUrl重置为默认值。

// 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