连接到 Atlas App Services 后端 - Swift SDK
应用客户端是与 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)
连接到特定MongoDB Server
默认情况下,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)
在运行时连接到不同的MongoDB Server
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的文件中使用实验性导入:
RealmSwiftExperimental) import RealmSwift (
如果要在用户登录并打开同步数据库后更改baseURL
,则应用必须执行客户端重置。 在代码中执行以下步骤:
通过调用
app.updateBaseUrl(to: )
方法更新baseURL
。使用新的
baseURL
再次对用户进行身份验证并登录。打开从新服务器提取数据的同步数据库。
服务器和客户端都必须在线,用户才能进行身份验证并连接到新服务器。 如果服务器不在线或客户端没有网络连接,则用户无法进行身份验证并打开数据库。
支持的操作系统
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。