连接到 App Services - C++ SDK
应用客户端是 Atlas App Services 后端接口。 它提供对身份验证和 Atlas Function 的访问。
App Services App 的某些功能与用户帐户相关联。 例如,您需要先对用户进行身份验证,然后才能访问应用程序的功能。
先决条件
在连接到Atlas App Services之前,您需要一个带有 App ID的App Services App 。 要开始使用,请参阅App Services文档中的创建应用。
要了解如何在ID Atlas App Services用户界面中 查找 App 请参阅 文档中的查找 AppID Atlas App ServicesID。
访问应用程序客户端
创建一个Realm::App::configuration() ,并将您的应用的 ID 作为参数。 您可以选择通过应用配置配置其他详细信息。
使用此
realm::App::configuration()
初始化应用程序。 您可以使用此App
实例在整个客户端应用程序中访问Atlas App Services功能。
auto appConfig = realm::App::configuration(); appConfig.app_id = APP_ID; auto app = realm::App(appConfig);
提示
构建 Android 应用
构建使用 Realm C++ SDK 的 Android 应用程序时,您必须将filesDir.path
传递给db_config构造函数中的file_path
参数。 有关更多信息,请参阅:构建 Android 应用。
设置自定义HTTP headers
如果您将Atlas App Services或Device Sync与代理设置一起使用,则可能需要设置自定义HTTP headers 。 支持在RealmC++ SDK HTTP headersrealm::App::configuration() 和 realm::db_config 上设置自定义 。
初始化应用配置时,请传入字符串标头键和值的映射。
std::map<std::string, std::string> customHttpHeaders; customHttpHeaders.emplace("CUSTOM_HEADER_NAME", "CUSTOM_HEADER_VALUE"); auto appConfig = realm::App::configuration(); appConfig.app_id = APP_ID; appConfig.custom_http_headers = customHttpHeaders; auto app = realm::App(appConfig);
如果您调用函数,则应用程序将使用这些自定义标头。
如果要在 Device Sync 中使用自定义标头,则必须另外在 域::db_config 上设置标头。
在 Realm 中使用 HTTP proxy
如果您已配置 HTTP proxy,则可以使用 HTTP tunneling 来路由 Realm 流量。
要将 Realm 配置为使用 HTTP proxy,请执行以下操作:
使用代理的详细信息初始化proxy_config 。
auto proxyConfig = realm::proxy_config(); proxyConfig.port = 8080; proxyConfig.address = "127.0.0.1"; proxyConfig.username_password = {"username", "password"}; auto appConfig = realm::App::configuration(); appConfig.app_id = APP_ID; appConfig.proxy_configuration = proxyConfig; auto app = realm::App(appConfig); auto user = app.get_current_user(); auto syncConfig = user->flexible_sync_configuration(); syncConfig.set_proxy_config(proxyConfig); auto syncedRealm = realm::db(syncConfig);
加密应用元数据
当您连接到 App Services 时,Realm 会在设备上创建额外的元数据文件。有关这些元数据文件的更多信息,请参阅适用于 C++ 的 Atlas Device SDK。
您可以加密 App Services 在客户端设备上存储的元数据,这与加密域类似。
在 Apple 设备上,元数据默认已加密。 要禁用此功能,请将REALM_DISABLE_METADATA_ENCRYPTION
添加到环境变量中。
要在其他平台上启用元数据加密,必须在realm::App::configuration上设置metadata_encryption_key
。
// Check if we already have a key stored in the platform's secure storage. // If we don't, generate a new one. // Use your preferred method to generate a key. This example key is // NOT representative of a secure encryption key. It only exists to // illustrate the form your key might take. std::array<char, 64> exampleKey = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0}; // Create and populate an App configuration. auto appConfig = realm::App::configuration(); appConfig.app_id = APP_ID; // Specify the metadata key. appConfig.metadata_encryption_key = exampleKey; // Use the configuration when you open the app. auto app = realm::App(appConfig);