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

连接到 Atlas App Services 后端 - Swift SDK

在此页面上

  • 访问应用程序客户端
  • 配置
  • 同步连接共享
  • 同步超时选项
  • 连接到特定MongoDB Server
  • 在运行时连接到不同的MongoDB Server
  • 支持的操作系统

应用客户端是与 App Services 后端的接口。 它提供对身份验证功能函数查询 MongoDB Atlas 数据源Device Sync 的访问。

注意

Apple 隐私清单

SDK 的 Apple 隐私清单不涵盖连接到 Atlas 或通过 App 客户端使用的任何数据。 如果您的应用程序连接到 App Services,并且您打算通过 Apple App Store 分发它,则您可能需要在应用程序的 Apple 隐私清单中提供自己的披露信息。

有关更多信息,请参阅Apple 隐私清单。

传递应用的 App ID ,您可以在 App Services用户界面中找到该 ID。

let app = App(id: YOUR_APP_SERVICES_APP_ID) // replace YOUR_APP_SERVICES_APP_ID with your App ID

您可以将配置对象传递给 App

let configuration = AppConfiguration(
baseURL: "https://services.cloud.mongodb.com", // You can customize base URL
transport: nil, // Custom RLMNetworkTransportProtocol
defaultRequestTimeoutMS: 30000
)
let app = App(id: "my-app-services-app-id", configuration: configuration)

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

重要

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

从 Swift SDK 版本10.46.0开始, 您可以更改应用配置中的baseURL ,应用客户端会使用新的baseURL 。 在 Swift SDK 版本10.45.3及更早版本中,当您初始化 App 客户端时,会在内部缓存配置。 尝试关闭应用程序,然后在同一进程中使用更改后的配置重新打开该应用程序无效。 客户端继续使用缓存的配置。

版本 10.41.0 中的新增内容

您可以在AppConfiguration上设立enableSessionMultiplexing布尔值,以指定Realm Swift SDK是应为每个同步域打开与服务器的连接,还是为所有同步 Realm股票与服务器的连接。

如果您没有为此布尔值指定值,则 Realm 默认为所有同步 Realm 的每个 App Services 用户共享一个连接。

let configuration = AppConfiguration(enableSessionMultiplexing: false)
let app = App(id: YOUR_APP_SERVICES_APP_ID, configuration: configuration)

版本 10.41.0 中的新增内容

您可以在AppConfiguration上设置各种同步超时选项。 syncTimeouts属性可接受SyncTimeoutOptions对象来覆盖这些设置的默认值。

有关可用超时设置及其定义的完整列表,请参阅RLMSyncTimeoutOptions。

let syncTimeoutOptions = SyncTimeoutOptions(
connectTimeout: 30000,
connectionLingerTime: 5000,
pingKeepalivePeriod: 10000,
pongKeepaliveTimeout: 10000,
fastReconnectLimit: 30000
)
let configuration = AppConfiguration(syncTimeouts: syncTimeoutOptions)
let app = App(id: YOUR_APP_SERVICES_APP_ID, configuration: configuration)

默认情况下,Atlas Device SDK 使用https://services.cloud.mongodb.com的全局baseURL连接到 Atlas。 在某些情况下,您可能想要连接到不同的服务器:

  • 您的 App Services App 使用本地部署,并且您希望直接连接到您所在区域的本地baseURL

您可以在AppConfiguration中指定baseURL

// Specify a baseURL to connect to a server other than the default.
// In this case, an Edge Server instance running on the device.
let configuration = AppConfiguration(baseURL: "http://localhost:80")
let edgeApp = App(id: EDGE_SERVER_APP_ID, configuration: configuration)

10.50.0版本新增

在某些情况下,您可能希望在应用运行时更改baseURL 。 要在运行时更改baseURL ,请调用app.updateBaseUrl(to: )方法:

// Specify a baseURL to connect to a server other than the default.
// In this case, an Edge Server instance running on the device.
let configuration = AppConfiguration(baseURL: "http://localhost:80")
let edgeApp = App(id: EDGE_SERVER_APP_ID, configuration: configuration)
// You can check the `baseURL` of an app to define app logic.
if edgeApp.baseURL == "http://localhost:80" {
print("Client app is currently connected to a local Edge Server instance")
}
// ... log in a user and use the app...
// ... some time later...
try await edgeApp.updateBaseUrl(to: "https://services.cloud.mongodb.com")

此API是实验性的,因此您必须在要使用此API的文件中使用实验性导入:

@_spi(RealmSwiftExperimental) import RealmSwift

如果要在用户登录并打开同步数据库后更改baseURL ,则应用必须执行客户端重置。 在代码中执行以下步骤:

  1. 暂停同步会话。

  2. 通过调用app.updateBaseUrl(to: )方法更新baseURL

  3. 使用新的baseURL再次对用户进行身份验证并登录。

  4. 打开从新服务器提取数据的同步数据库。

服务器和客户端都必须在线,用户才能进行身份验证并连接到新服务器。 如果服务器不在线或客户端没有网络连接,则用户无法进行身份验证并打开数据库。

Realm Swift SDK支持连接到范围Apple 操作系统的Atlas App Services App,具体取决于 Xcode 版本和Realm Swift SDK版本。 连接到App Services App可以:

  • 身份验证和用户管理

  • 调用Atlas Function

  • 查询MongoDB Atlas数据源

  • 设备同步

有关支持的操作系统的最新信息,请参阅操作系统支持。

目前, Realm Swift SDK不支持从 watchOS 连接到App Services App。

后退

应用程序服务